13.7. OpenID Connect アイデンティティープロバイダーとの 3scale API Management インテグレーションの例
この例では、3scale を Red Hat の single sign-on テクノロジーまたは Red Hat build of Keycloak と OpenID Connect アイデンティティープロバイダーとして統合する場合のフローを示します。この例には、以下の特徴があります。
- 管理ポータルで、API プロバイダーが 3scale API プロダクトを定義し、そのプロダクトが OpenID Connect ID プロバイダーとして single sign-on を使用するように設定されています。
このプロダクトの OpenID Connect 設定には以下が含まれます。
-
公開ベース URL:
https://api.example.com -
プライベートベース URL:
https://internal-api.example.com -
OpenID Connect 発行者:
https://zync:41dbb98b-e4e9-4a89-84a3-91d1d19c4207@idp.example.com/auth/realms/myrealm - 標準フローである 認可コードフロー を選択します。
-
公開ベース URL:
3scale 開発者ポータルには、以下の特徴を持つアプリケーションがあります。このアプリケーションは、開発者ポータルの特定のアプリケーションプランで指定されている 3scale API プロダクトにアクセスできるように、API コンシューマーがサブスクライブした結果、作成されたものです。
-
クライアント ID:
myclientid -
Client Secret:
myclientsecret -
URL のリダイレクト:
https://myapp.example.com
-
クライアント ID:
single sign-on の
myrealmレルムに、以下の特性を持つクライアントがあります。-
クライアント ID:
myclientid -
Client Secret:
myclientsecret -
URL のリダイレクト:
https://myapp.example.com
-
クライアント ID:
myrealmレルムには、以下のユーザーが含まれます。-
ユーザー名:
myuser -
パスワード:
mypassword
-
ユーザー名:
-
myrealmの 3scale Zync クライアントが正しい サービスアカウント ロールを持ちます。
フローは以下のようになります。
エンドユーザー (API コンシューマー) は、以下の例のエンドポイントで認証サーバーの single sign-on に認可要求を送信します。
https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/authこの要求では、アプリケーションは以下のパラメーターを提供します。
-
クライアント ID:
myclientid -
リダイレクト URL:
https://myapp.example.com
-
クライアント ID:
- アプリケーションはエンドユーザーを single sign-on のログイン画面にリダイレクトします。
エンドユーザーは、次の認証情報を使用して single sign-on にログインします。
-
ユーザー名:
myuser -
パスワード:
mypassword
-
ユーザー名:
- 設定およびエンドユーザーがこのアプリケーションで初めて認証されるかどうかに応じて、同意に関するウィンドウが表示されます。
- Single Sign-On は、エンドユーザーに認可コードを発行します。
API コンシューマーアプリケーションは、次のエンドポイントを使用して、JWT の認可コードを交換する要求を送信します。
https://idp.example.com/auth/realms/myrealm/protocol/openid-connect/token要求には、認可コードとこれらのパラメーターが含まれます。
-
クライアント ID:
myclientid -
クライアントシークレット:
myclientsecret -
リダイレクト URL:
https://myapp.example.com
-
クライアント ID:
-
Single Sign-On は、
eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lk…xBArNhqF-Aなどの access_token フィールドを持つ JSON Web Token (JWT) を返します。 API コンシューマーアプリケーションは、以下のようなヘッダーを使用して API 要求を
https://api.example.comに送信します。Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lk…xBArNhqF-A.-
アプリケーションは、
https://internal-api.example.comから正常なレスポンスを受け取るはずです。