1.20.7.4. OpenID Connect (OIDC) のユースケース
Service Mesh および 3scale Istio アダプターの場合、以下の例のように RequestAuthentication
をデプロイし、独自のワークロードデータおよび jwtRules
を入力する必要があります。
apiVersion: security.istio.io/v1beta1 kind: RequestAuthentication metadata: name: jwt-example namespace: bookinfo spec: selector: matchLabels: app: productpage jwtRules: - issuer: >- http://keycloak-keycloak.34.242.107.254.nip.io/auth/realms/3scale-keycloak jwksUri: >- http://keycloak-keycloak.34.242.107.254.nip.io/auth/realms/3scale-keycloak/protocol/openid-connect/certs
RequestAuthentication
を適用するとき、JWT
トークンを検証するためにネイティブプラグインで Envoy
を設定します。プロキシーは、モジュールを実行する前にすべてを検証します。したがって、失敗したリクエストが 3scale WebAssembly モジュールに実行されません。
JWT
トークンが検証されると、プロキシーはそのコンテンツを内部メタデータオブジェクトに格納します。エントリーのキーは、プラグインの特定の設定に依存します。このユースケースでは、不明なキー名が含まれる単一のエントリーを持つ構造化オブジェクトを検索することができます。
OIDC の 3scale app_id
は、OAuth client_id
と一致します。これは JWT
トークンの azp
フィールドまたは aud
フィールドにあります。
Envoy のネイティブ JWT
認証フィルターから app_id
フィールドを取得するには、以下の例を参照してください。
credentials: app_id: - filter: path: - envoy.filters.http.jwt_authn - "0" keys: - azp - aud ops: - take: head: 1
この例では、モジュールに対し、filter
ソースタイプを使用して Envoy
固有の JWT
認証ネイティブプラグインからオブジェクトのフィルターメタデータを検索するよう指示します。このプラグインには、1 つのエントリーと事前に設定された名前を持つ構造化オブジェクトの一部として JWT
トークンが含まれます。0
を使用して、単一のエントリーのみにアクセスするように指定します。
結果の値は、以下の 2 つのフィールドを解決する構造です。
-
azp
:app_id
が見つけられる値。 -
aud
: この情報も見つけられる値。
この操作により、割り当て用に 1 つの値のみが保持されます。