次に、コード・サンプルを示します:
- 署名付きコンテンツは認可ヘッダー(.request.headers.authorization|split(" ")|.[1]|split(".")|(.[0]+"."+.[1]))から抽出されます。
- シグネチャはbase64URLencodeStringで、認可ヘッダーの一部(connectivity::base64URLDecode(.request.headers.authorization|split(" ")|.[1]|split(".")|.[2])です。
- シグネチャ・キーは、同じポリシーのsecurityProperty signKey部分に追加され、RSAファンクション(.securityProperties.signKey)で参照されます。 このキーは、OICにアップロードされた証明書の別名(例:- "orakey")に解決されました。
- タイムスタンプ検証は必須ではないため、空の文字列です。
"securityPolicies": [
{
"type": "managed",
"refName": "RSA_SIGNATURE_VALIDATION",
"description": "Validates RSA Signature",
"displayName": "RSA SIGNATURE VALIDATION",
"scope": "TRIGGER",
"securityProperties": [
{
"name": "signatureString",
"displayName": "Signature Statement",
"hidden": true,
"required": true,
"default": "${.request.body)}"
},
{
"name": "signature",
"displayName": "Signature Statement",
"hidden": true,
"required": true,
"default": "${connectivity::base64URLDecode(.request.query.signature)}"
},
{
"name": "signatureAlgorithm",
"displayName": "Request Signature Location",
"hidden": true,
"required": true,
"default": "SHA256withRSA"
},
{
"name": "signKey",
"displayName": "Certificate Alias",
"hidden": false,
"required": true
},
{
"name": "timestampValidator",
"displayName": "Request Signature Location",
"hidden": true,
"required": true,
"default": ""
},
]
}
]