JWT検証
Oracle Integrationフローを呼び出すための受信リクエストに存在するJWTの検証をサポートするには、JWT_VALIDATION管理対象セキュリティ・ポリシーを使用します。 接続定義に必要なセキュリティ・ポリシーをカスタマイズできます。
概要
ポリシーは、JWTの請求およびシグネチャを検証し、ユーザーをOracle Cloud Infrastructure Identity and Access Management (IAM)に対してアサートします。 多くのwebフック・パブリッシャ・アプリケーションは、シグネチャ付きのJWTトークンを送信します。 サードパーティ・プロバイダがトークンを発行します。
Oracleは、IAMを使用して、統合を起動するリクエストを認証します。 ポリシーは、受信JWTトークンを開き、トークンからJWTクレームを抽出し、JWTクレームからユーザーを抽出し、ユーザーがIAMに存在し、ServiceInvokerロールを持っているかどうかを判断します。 ユーザーが有効で承認されている場合、アクセスが許可されます。
ドキュメントにJWT検証ポリシーを追加するには、使用可能な認証スキーム・テンプレートを使用します。 「新規接続定義の実装」を参照してください。
セキュリティ・プロパティ
このセキュリティ・ポリシーを使用する接続定義は、securityPropertiesセクションで次のプロパティを定義します。 「接続プロパティおよびサンプル・コード」を参照してください。
name, displayName, shortDescription列およびdescription列の値は、アダプタ定義ドキュメントにセキュリティ・ポリシーを挿入したときに表示されるデフォルト値を示します。 これらの値は、必要に応じて更新できます。
| name | displayName | shortDescription | description | データ型 | 必須 | 推奨事項 |
|---|---|---|---|---|---|---|
|
|
|
|
|
String |
はい |
|
|
|
|
|
|
String |
はい |
該当なし |
|
|
|
|
|
String |
いいえ |
|
|
|
|
|
|
String |
いいえ |
|
サンプル・コード: JWT検証
次のサンプル・コードは、JWT検証の構成を示しています。 このコード・サンプルについては、次の点に注意してください:
-
セキュリティ・ポリシーは、認可ヘッダーからJWTトークンを抽出:
.request.headers.authorization|split(" ")|.[1] -
セキュリティ・ポリシーは、
signatureKeyプロパティからシグネチャ・キーを取得します。このキーは、JWT発行者の別名JWK URL (
"https://www.demosvc.com/oauth2/v3/certs"など)に解決されます -
ポリシーでは、標準のJWTクレームのみが検証され、カスタム・クレームは検証されません。
-
このポリシーでは、オーバーライドなしでデフォルトのサブジェクト・クレームが使用されます。
{
"connection": {
"securityPolicies": [
{
"type": "managed",
"policy": "JWT_VALIDATION",
"scope": "TRIGGER",
"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": ""
}
]
}
]
}
}