12.7. インテグレーションの例

3scale のサービス API が OpenID Connect 認証を使用するように設定されます。サービス API の 公開ベース URLhttps://api.example.com に、プライベートベース URLhttps://internal-api.example.com に、それぞれ設定されています。

API インテグレーションで OpenID Connect Issuer フィールドは https://zync:41dbb98b-e4e9-4a89-84a3-91d1d19c4207@idp.example.com/auth/realms/myrealm に設定され、レルム myrealm のクライアント zync には正しい Service Account ロールが設定されています。

3scale には、クライアント ID、myclientid クライアントシークレット、およびリダイレクト URL が myclientsecret に設定されたアプリケーションがあります。https://myapp.example.com

RH-SSO では、myrealm レルム に以下の値を持つクライアントも存在します。

  • クライアント ID: myclientid
  • secret: myclientsecret
  • Valid Redirect URIs: https://myapp.example.com

このクライアントでは、Standard Flow が有効になっています。レルム myrealm には 1 人のユーザーが設定され、そのユーザー名およびパスワードは myuser および mypassword です。

フローは以下のようになります。

  1. エンドポイント https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/auth を使用して、アプリケーションは RH-SSO に承認リクエストを送信します。このリクエストの中で、アプリケーションは myclientid クライアント ID および https://myapp.example.com リダイレクト URL をパラメーターとして提供します。
  2. RH-SSO はログインウィンドウを表示し、ユーザーはここで自分のクレデンシャル (ユーザー名 myuser およびパスワード mypassword) を入力する必要があります。
  3. 設定およびユーザーがこのアプリケーションで初めて認証されるかどうかに応じて、同意に関するウィンドウが表示されます。
  4. ユーザーが認証されると、アプリケーションはエンドポイント https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/token を使用して RH-SSO にトークンリクエストを送信し、クライアント ID myclientid、クライアントシークレット myclientsecret、およびリダイレクト URL https://myapp.example.com を提供します。
  5. RH-SSO は、「access_token」フィールドが eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lk…​xBArNhqF-A と設定された JSON を返します。
  6. アプリケーションは、ヘッダー Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lk…​xBArNhqF-A を使用して API リクエストを https://api.example.com に送信します。
  7. アプリケーションは、https://internal-api.example.com から正常なレスポンスを受け取るはずです。