第2章 OpenID Connect を使用したアプリケーションとサービスのセキュア化
このセクションでは、Red Hat build of Keycloak を使用して OpenID Connect でアプリケーションとサービスを保護する方法について説明します。
2.1. 利用可能なエンドポイント
Red Hat build of Keycloak は、完全に準拠した OpenID Connect プロバイダーの実装として、アプリケーションとサービスがユーザーの認証と認可に使用できるエンドポイントのセットを公開します。
このセクションでは、アプリケーションとサービスが Red Hat build of Keycloak と対話する際に使用する必要がある、いくつかの主要なエンドポイントについて説明します。
2.1.1. エンドポイント
理解すべき最も重要なエンドポイントは、well-known
設定エンドポイントです。Red Hat build of Keycloak の OpenID Connect 実装に関連するエンドポイントおよびその他の設定オプションをリスト表示します。エンドポイントは次のとおりです。
/realms/{realm-name}/.well-known/openid-configuration
完全な URL を取得するには、Red Hat build of Keycloak のベース URL を追加し、{realm-name}
をレルムの名前に置き換えます。以下に例を示します。
http://localhost:8080/realms/master/.well-known/openid-configuration
一部の RP ライブラリーは、このエンドポイントから必要なすべてのエンドポイントを取得しますが、その他のライブラリーでは、エンドポイントを個別にリスト表示しないといけない場合があります。
2.1.1.1. 認可エンドポイント
/realms/{realm-name}/protocol/openid-connect/auth
認可エンドポイントはエンドユーザーの認証を実行します。この認証は、ユーザーエージェントをこのエンドポイントにリダイレクトすることによって行われます。
詳細は、OpenID Connect 仕様の 認可エンドポイント セクションを参照してください。
2.1.1.2. トークンエンドポイント
/realms/{realm-name}/protocol/openid-connect/token
トークンエンドポイントは、トークンの取得に使用されます。トークンは、認可コードを調べるか、使用するフローに応じて認証情報を直接指定して取得できます。トークンエンドポイントは、有効期限が切れたときに新しいアクセストークンの取得にも使用されます。
詳細は、OpenID Connect 仕様の トークンエンドポイント セクションを参照してください。
2.1.1.3. userInfo エンドポイント
/realms/{realm-name}/protocol/openid-connect/userinfo
userinfo エンドポイントは、認証されたユーザーについての標準要求を返します。このエンドポイントは、ベアラートークンによって保護されます。
詳細は、OpenID Connect 仕様の userInfo エンドポイント セクションを参照してください。
2.1.1.4. ログアウトエンドポイント
/realms/{realm-name}/protocol/openid-connect/logout
ログアウトエンドポイントは、認証されたユーザーをログアウトします。
ユーザーエージェントはエンドポイントにリダイレクトされる可能性があり、これによりアクティブなユーザーセッションがログアウトされます。その後、ユーザーエージェントはアプリケーションにリダイレクトされます。
エンドポイントはアプリケーションによって直接呼び出すこともできます。このエンドポイントを直接呼び出すには、更新トークンと、クライアントの認証に必要な認証情報を追加する必要があります。
2.1.1.5. 証明書エンドポイント
/realms/{realm-name}/protocol/openid-connect/certs
証明書エンドポイントは、レルムが有効にした公開鍵を返し、JSON Web Key (JWK) としてエンコードされます。レルム設定に応じて、トークンを検証するために 1 つ以上のキーを有効にできます。詳細は、サーバー管理ガイド および JSON Web キーの仕様 を参照してください。
2.1.1.6. イントロスペクションエンドポイント
/realms/{realm-name}/protocol/openid-connect/token/introspect
イントロスペクションエンドポイントは、トークンのアクティブな状態を取得するために使用されます。つまり、これを使用してアクセストークンを検証したり、更新したりできます。このエンドポイントは、機密クライアントによってのみ呼び出せます。
このエンドポイントで呼び出す方法の詳細については、OAuth 2.0 Token Introspection specification を参照してください。
2.1.1.7. 動的クライアント登録エンドポイント
/realms/{realm-name}/clients-registrations/openid-connect
動的クライアント登録エンドポイントは、クライアントを動的に登録するのに使用されます。
詳細は、クライアント登録 および OpenID 接続動的クライアント登録仕様 を参照してください。
2.1.1.8. トークン失効エンドポイント
/realms/{realm-name}/protocol/openid-connect/revoke
トークン失効エンドポイントは、トークンの取り消しに使用されます。このエンドポイントでは、更新トークンとアクセストークンの両方がサポートされます。更新トークンを取り消すと、対応するクライアントに対するユーザーの同意も取り消されます。
このエンドポイントで呼び出す方法の詳細については、OAuth 2.0 Token Revocation specification を参照してください。
2.1.1.9. デバイス認可エンドポイント
/realms/{realm-name}/protocol/openid-connect/auth/device
デバイス認可エンドポイントは、デバイスコードとユーザーコードを取得するために使用されます。これは、機密またはパブリッククライアントで呼び出すことができます。
このエンドポイントで呼び出す方法の詳細については、OAuth 2.0 Device Authorization Grant specification を参照してください。
2.1.1.10. backchannel 認証エンドポイント
/realms/{realm-name}/protocol/openid-connect/ext/ciba/auth
backchannel 認証エンドポイントは、クライアントによる認証要求を識別する auth_req_id を取得するために使用されます。これは、機密クライアントでのみ呼び出すことができます。
このエンドポイントで呼び出す方法の詳細は、OpenID Connect Client Initiated Backchannel Authentication Flow specification を参照してください。
このガイドの backchannel 認証エンドポイント およびサーバー管理ガイドの クライアントが開始したバックチャンネル認証の許可 セクションなど、Red Hat build of Keycloak ドキュメントの別のパートも参照してください。