8.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、クライアントシークレット、およびリダイレクト URL がそれぞれ myclientidmyclientsecret、および https://myapp.example.com に設定されたアプリケーションがあります。

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

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

このクライアントでは、標準フローが有効になっています。レルム 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 を使用して、クライアント ID myclientid、クライアントシークレット myclientsecret、およびリダイレクト URL https://myapp.example.com と共に、トークンリクエストを RH-SSO に送信します。
  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 から正常なレスポンスを受け取るはずです。