機械翻訳について

HMACシグネチャを使用したトリガー接続定義の作成

この手順では、ハッシュ・ベースのメッセージ認証コード(HAMC)シグネチャを使用するセキュリティ・ポリシーを使用してトリガー接続定義を作成する方法の概要を説明します。

前提条件:

webフックがどのように署名されるかについては、Webフック・プロデューサのドキュメントを確認してください。 次の情報を収集します:

  • 署名とは?
  • 使用されるアルゴリズム。
  • リクエストのシグネチャはどのように送信されますか。 たとえば、ヘッダー値とヘッダー値の形式を調べます。
  • 検証するタイムスタンプに関する情報が含まれていますか。 その場合、どのような形式ですか。
  • 署名キーを取得するには?
  1. Visual Studio Codeエディタでアダプタ定義ドキュメントを開きます。
  2. ドキュメントのconnectionコード・セクションに移動し、スコープをTRIGGERに設定します。
  3. 前提条件で収集した情報に従って、セキュリティ・プロパティの値を設定します。

    次に、コード・サンプルを示します:

    • シグネチャは、シグネチャ・リクエスト本文(.request.body)によって計算されます。
    • シグネチャ・キーは、同じポリシーのsecurityProperty signKey部分に追加され、HMACファンクション(.securityProperties.signKey)で参照されます。
    • 照合する署名がHTTPヘッダーx-hub-signature-256に存在します。
    • タイムスタンプ検証は必須ではないため、空の文字列です。
    "securityPolicies": [
         {  
            "type": "managed",
            "refName": "HMAC_SIGNATURE_VALIDATION",
            "description": "Validates HMAC Signature",
            "displayName": "HMAC SIGNATURE VALIDATION",
            "scope": "TRIGGER",
            "securityProperties": [
               {
                   "name": "signature",
                   "hidden": true,
                   "required": true,
                   "default": "${connectivity::hexDecode(.request.headers.digest)}"
               },
               {
                   "name": "signatureString",
                   "displayName": "Request Signature Location",
                   "hidden": true,
                   "required": true,
                   "default": "${.request.body}"
               },
               {
                   "name": "signatureAlgorithm",
                   "displayName": "Request Signature Location",
                   "hidden": true,
                   "required": true,
                   "default": "HMACSHA256"
               },
               {
                   "name": "secret",
                   "displayName": "Shared Secret",
                   "hidden": false,
                   "default": true
               },
               {
                   "name": "timestampValidator",
                   "displayName": "Timestamp Validation",
                   "hidden": true,
                   "required": true,
                   "default": ""
               },
                
           ]
          }
       ]

    別のコード・サンプルを次に示します:

    • シグネチャは、シグネチャ・リクエスト本文(.request.body)によって計算されます。
    • シグネチャ・キーは、同じポリシーのsecurityProperty signKey部分に追加され、HMACファンクション(.securityProperties.signKey)で参照されます。
    • 照合する署名がHTTPヘッダーx-hub-signature-256に存在します。
    • タイムスタンプ検証は、ヘッダーのxタイムスタンプに対して実行されます。 このサンプル・コードでは、タイムスタンプは現在の時間より後で、わずか5分間有効です。
    {
     "connection": {
         
        "securityPolicies": [
         { 
            "type": "managed",
            "refName": "HMAC_SIGNATURE_VALIDATION",
            "description": "Validates HMAC Signature",
            "displayName": "HMAC SIGNATURE VALIDATION",
            "scope": "TRIGGER",
            "securityProperties": [
               {
                   "name": "signature",
                   "hidden": true,
                   "required": true,
                   "default": "${connectivity::base64Decode(.request.headers.digest)}"
               },
               {
                   "name": "signatureString",
                   "hidden": true,
                   "required": true,
                   "default": "${.request.body}"
               },
               {
                   "name": "signatureAlgorithm",
                   "displayName": "Request Signature Location",
                   "hidden": true,
                   "required": true,
                   "default": "HMACSHA256"
               },
               {
                   "name": "secret",
                   "displayName": "Shared Secret",
                   "hidden": false,
                   "required": true
               },
               {
                "name": "timestampValidator",
                "displayName": "Shared Secret",
                "hidden": true,
                "required": true,
                "default": "(.request.headers."x-timestamp"|tonumber <= (now*1000)) and  ((now*1000)-(.request.headers."x-timestamp"|tonumber) <=300000 ) "
              }
                 
           ]
          }
       ]
      }
    }