JWTシグネチャ・セキュリティ・ポリシーを使用したトリガー接続定義の実装
この手順では、JWTシグネチャ・セキュリティ・ポリシーを使用するトリガー接続定義の実装方法の概要を示します。
前提条件:
webフックがどのように署名されるかについては、Webフック・プロデューサのドキュメントを確認してください。 次の情報を収集します:
- JWTトークンがリクエストの一部として送信される場所
- 検証するカスタム要求がある場合
- HMACまたはRSAシグネチャを使用するかどうか
- シグネチャ・キー
- 症例請求の上書き
- Visual Studio Codeエディタでアダプタ定義ドキュメントを開きます。
- ドキュメントの
connectionコード・セクションに移動し、スコープをTRIGGERに設定します。 - 前提条件で収集した情報に従って、セキュリティ・プロパティの値を設定します。
コード・サンプル1は次のとおりです:
- JWTトークンは、認可ヘッダー(.request.headers.authorization|split(" ")|.[1]から抽出されます。
- シグネチャ・キーは、同じポリシーのsecurityProperty signKey部分に追加され、jwtVerifyファンクション(.securityProperties.signKey)で参照されます。 このキーは、JWT発行者の別名JWK URL (https://www.demosvc.com/oauth2/v3/certsなど)に解決されます。
- 検証するカスタム要求がありません。
- デフォルトのサブジェクト請求(上書きなし)。
{ "connection": { "securityPolicies": [ { "type": "managed", "policy": "JWT_VALIDATION", "securityProperties": [ { "name": "jwtToken", "displayName": "JWT Token", "hidden": true, "required": true, "default": "${.request.headers.authorization|split(\" \")|.[1]}" }, { "name": "signatureKey", "displayName": "JWK URL", "hidden": true, "required": true, "default": "https://www.demosvc.com/oauth2/v3/certs" }, { "name": "subjectClaim", "displayName": "Subject claim Override", "hidden": true, "required": false, "default": "" }, { "name": "customClaimsValidation", "displayName": "Custom Claims Validation", "hidden": true, "required": false, "default": "" } ] } ] } }コード・サンプル2は次のとおりです:
- JWTトークンは認可ヘッダー(.request.headers.authorization|split(" ")|.[1])から抽出されます
- シグネチャ・キーは、同じポリシーのsecurityProperty signKey部分に追加され、jwtVerifyファンクション(.securityProperties.signKey)で参照されます。 このキーは、JWT発行者の別名JWK URL (https://www.dummysvc.com/oauth2/v3/certsなど)に解決されます
- Eメールは件名要求です
- カスタム請求発行者検証
{ "connection": { "securityPolicies": [ { "type": "managed", "policy": "JWT_VALIDATION", "securityProperties": [ { "name": "jwtToken", "displayName": "JWT Token", "hidden": true, "required": true, "default": "${.request.headers.authorization|split(\" \")|.[1]}" }, { "name": "signatureKey", "displayName": "JWK URL", "hidden": true, "required": true, "default": "https://www.dummysvc.com/oauth2/v3/certs" }, { "name": "subjectClaim", "displayName": "Subject claim Override", "hidden": true, "required": false, "default": "email" }, { "name": "customClaimsValidation", "displayName": "Custom Claims Validation", "hidden": true, "required": false, "default": "${{\"iss\": \"https://dummyIssuer\"}}" } ] } ] } }次に、フローのコード・サンプル3を示します:
- トークン、署名キー、カスタム要求およびサブジェクト要求が含まれます。
- シグネチャ・キーをフェッチします。
- jq関数を使用します。
{ "connection": { "securityPolicies": [ { "type": "managed", "policy": "JWT_VALIDATION", "securityProperties": [ { "name": "jwtToken", "displayName": "JWT Token", "hidden": true, "required": true, "default": "${.request.headers.authorization|split(\" \")|.[1]}" }, { "name": "signatureKey", "displayName": "JWK URL", "hidden": true, "required": true, "default": "flow:getCerts" }, { "name": "subjectClaim", "displayName": "Subject claim Override", "hidden": true, "required": false, "default": "email" }, { "name": "customClaimsValidation", "displayName": "Custom Claims Validation", "hidden": true, "required": false, "default": "" } ] } ] } } "flows": { "getCerts": { "id": "getCerts", "description": "getCerts", "specVersion": "0.8", "version": "0.1", "start": "startState", "functions": [ { "name": "getCertificate", "type": "expression", "operation": "{\"certificates\":[\"-----BEGIN CERTIFICATE-----\\nMIIbTAe\\nFw0GVy\\nYX\/wQCMAAw\nIYX\\n-----END CERTIFICATE-----\"]}" } ], "states":[ { "name":"startState", "type":"operation", "actions":[ { "functionRef": "getCertificate", "actionDataFilter": { "results": "${.certificates}" "toStateData": "${ .output }" } } ] "end": true } ] } } }