次に、コード・サンプルを示します:
- シグネチャは、シグネチャ・リクエスト本文(.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 ) "
}
]
}
]
}
}