第13章 3scale API Management と OpenID Connect アイデンティティープロバイダーの統合
API 要求を認証するために、3scale は OpenID Connect 仕様 に準拠するアイデンティティープロバイダーと統合できます。3scale との互換性を確保するために、アイデンティティープロバイダーは Red Hat single sign-on または Red Hat build of Keycloak、デフォルトの Keycloak クライアント登録 を実装するサードパーティーのアイデンティティープロバイダーに指定できます。OpenID Connect を実装するすべてのアイデンティティープロバイダーは、3scale API ゲートウェイ (APIcast) と互換性があります。
3scale では、RFC 7591 Dynamic Client Registration Mechanism は使用されません。3scale と OpenID Connect アイデンティティープロバイダー間で互換性を完全に確保するため、デフォルトの Keycloak クライアント登録の依存関係があります。
OpenID Connect のベースは OAuth 2.0 Authorization Framework (RFC 6749) です。OpenID Connect は API 要求で JSON Web Token(JWT)(RFC 7519) を使用してその要求を認証します。3scale を OpenID Connect アイデンティティープロバイダーと統合する場合に、プロセスには主要な部分が 2 つあります。
- APIcast は要求内の JWT を解析して検証します。成功すると、APIcast は API コンシューマークライアントアプリケーションの ID を認証します。
- 3scale Zync コンポーネントは、3scale アプリケーションの詳細を OpenID Connect アイデンティティープロバイダーと同期します。
3scale は、Red Hat の single sign-on テクノロジーまたは Red Hat build of Keycloak が OpenID Connect アイデンティティープロバイダーである場合に、これらのインテグレーションポイントの両方をサポートします。サポートされるバージョンは、Supported Configurations を参照してください。ただし、Red Hat の single sign-on テクノロジーまたは Red Hat build of Keycloak の使用は必須ではありません。OpenID Connect 仕様およびデフォルトの Keycloak クライアント登録をサポートするアイデンティティープロバイダーを使用できます。APIcast のインテグレーションは、Red Hat のシングルサインオン、Red Hat build of Keycloak、および ForgeRock を使用してテストされています。
以下のセクションでは、OpenID Connect アイデンティティープロバイダーを使用するように 3scale を設定する方法を説明します。
- 3scale API Management と OpenID Connect アイデンティティープロバイダーのインテグレーションの概要
- APIcast が JSON Web トークンを処理する方法
- 3scale API Management Zync がアプリケーションの情報を OpenID Connect アイデンティティープロバイダーと同期する方法
- OpenID Connect アイデンティティープロバイダーとしての 3scale API Management と Red Hat Single Sign-On の統合
- 3scale API Management とサードパーティー OpenID Connect アイデンティティープロバイダーの統合
- OpenID Connect アイデンティティープロバイダーを使用した 3scale API Management のテスト
- OpenID Connect アイデンティティープロバイダーとの 3scale API Management インテグレーションの例
13.1. 3scale API Management と OpenID Connect アイデンティティープロバイダーのインテグレーションの概要
主要な Red Hat 3scale API Management コンポーネントはそれぞれ、以下のように認証に参加します。
- APIcast は、API コンシューマーアプリケーションが提供する認証トークンの信頼性を検証します。デフォルトの 3scale デプロイメントでは、APIcast は API プロダクトの OpenID Connect 設定の自動検出を実装するので、このような検証が可能です。
- API プロバイダーは管理ポータルを使用して認証フローを設定します。
- 3scale マネージドの API が標準の API キーまたはアプリケーション ID とキーペアで要求を認証しない場合には、API プロバイダーは 3scale を OpenID Connect アイデンティティープロバイダーと統合する必要があります。下図の OpenID Connect アイデンティティープロバイダーは Red Hat single sign-on です。
- 認証設定とライブの開発者ポータルにより、API コンシューマーは開発者ポータルを使用して特定の 3scale API プロダクトにアクセスできるようにするアプリケーションプランにサブスクライブします。
- OpenID Connect が 3scale と統合されると、サブスクリプションは API コンシューマーアプリケーションに設定されたフローをトリガーして、OpenID Connect アイデンティティープロバイダーから JSON Web Tokens (JWT) を取得します。API プロバイダーは OpenID Connect を使用するように API プロダクトを設定するタイミングで、このフローを指定します。
図13.1 OpenID Connect アイデンティティープロバイダーを使用する主要な 3scale コンポーネント
アプリケーションプランにサブスクライブした後に、API コンシューマーは統合された OpenID Connect アイデンティティープロバイダーから認証情報を取得します。これらの認証情報により、API コンシューマーアプリケーションがアップストリーム API (API コンシューマーがアクセスできる 3scale API プロダクトによって提供される API) に送信する要求の認証が可能になります。
認証情報には、クライアント ID とクライアントシークレットが含まれます。API コンシューマーによって作成されたアプリケーションは、これらの認証情報を使用して、OpenID Connect ID プロバイダーから JSON Web Token (JWT) を取得します。OpenID Connect で 3scale インテグレーションを設定する場合には、API コンシューマーアプリケーションが JWT を取得する方法のフローを選択します。Red Hat の single sign-on テクノロジーでデフォルトの 認可コード フローを使用する API コンシューマーアプリケーションでは、アプリケーションが以下を実行する必要があります。
- アップストリーム API バックエンドへの最初の要求の前に、OpenID Connect アイデンティティープロバイダーで OAuth 承認フローを開始します。認可コードフローはエンドユーザーを Red Hat single sign-on にリダイレクトします。エンドユーザーはログインして認可コードを取得します。
- JWT の認可コードを交換します。
- 認証時に Red Hat single sign-on から JWT を受け取ります。
- JWT が含まれる API 要求をアップストリーム API バックエンドに送信します。
- 有効期限が切れるまで、同じ JWT で後続の API 要求を送信します。
- JWT を更新するか、OpenID Connect アイデンティティープロバイダーに新しい要求を送信し、新しい JWT を取得します。必要なアクションは OpenID Connect アイデンティティープロバイダーによって異なります。
APIcast は API コンシューマーから要求を受け取り、その要求内の JWT を確認します。APIcast が JWT を検証する場合には、APIcast は JWT などの要求をアップストリーム API バックエンドに送信します。
図13.2 OpenID Connect アイデンティティープロバイダーは Red Hat single sign-on (ただし他の OpenID Connect アイデンティティープロバイダーも設定可能)