第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
/realms/{realm-name}/.well-known/openid-configuration
完全な URL を取得するには、Red Hat build of Keycloak のベース URL を追加し、{realm-name} をレルムの名前に置き換えます。以下に例を示します。
http://localhost:8080/realms/{realm-name}/.well-known/openid-configuration
http://localhost:8080/realms/{realm-name}/.well-known/openid-configuration
一部の RP ライブラリーは、このエンドポイントから必要なすべてのエンドポイントを取得しますが、その他のライブラリーでは、エンドポイントを個別にリスト表示しないといけない場合があります。
2.1.1.1. 認可エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
/realms/{realm-name}/protocol/openid-connect/auth
/realms/{realm-name}/protocol/openid-connect/auth
認可エンドポイントはエンドユーザーの認証を実行します。この認証は、ユーザーエージェントをこのエンドポイントにリダイレクトすることによって行われます。
詳細は、OpenID Connect 仕様の 認可エンドポイント セクションを参照してください。
2.1.1.2. トークンエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
/realms/{realm-name}/protocol/openid-connect/token
/realms/{realm-name}/protocol/openid-connect/token
トークンエンドポイントは、トークンの取得に使用されます。トークンは、認可コードを調べるか、使用するフローに応じて認証情報を直接指定して取得できます。トークンエンドポイントは、有効期限が切れたときに新しいアクセストークンの取得にも使用されます。
詳細は、OpenID Connect 仕様の トークンエンドポイント セクションを参照してください。
2.1.1.3. Userinfo エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
/realms/{realm-name}/protocol/openid-connect/userinfo
/realms/{realm-name}/protocol/openid-connect/userinfo
Userinfo エンドポイントは、認証されたユーザーに関する標準クレームを返します。このエンドポイントは、ベアラートークンによって保護されています。
詳細は、OpenID Connect 仕様の Userinfo Endpoint セクションを参照してください。
2.1.1.4. ログアウトエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
/realms/{realm-name}/protocol/openid-connect/logout
/realms/{realm-name}/protocol/openid-connect/logout
ログアウトエンドポイントは、認証されたユーザーをログアウトします。
ユーザーエージェントはエンドポイントにリダイレクトされる可能性があり、これによりアクティブなユーザーセッションがログアウトされます。その後、ユーザーエージェントはアプリケーションにリダイレクトされます。
エンドポイントはアプリケーションによって直接呼び出すこともできます。このエンドポイントを直接呼び出すには、リフレッシュトークンと、クライアントの認証に必要な認証情報を追加する必要があります。
2.1.1.5. 証明書エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
/realms/{realm-name}/protocol/openid-connect/certs
/realms/{realm-name}/protocol/openid-connect/certs
証明書エンドポイントは、レルムが有効にした公開鍵を返し、JSON Web Key (JWK) としてエンコードされます。レルム設定に応じて、トークンを検証するために 1 つ以上のキーを有効にできます。詳細は、サーバー管理ガイド および JSON Web Key の仕様 を参照してください。
詳細は、OpenID Connect Discovery の仕様を参照してください。
2.1.1.6. イントロスペクションエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
/realms/{realm-name}/protocol/openid-connect/token/introspect
/realms/{realm-name}/protocol/openid-connect/token/introspect
イントロスペクションエンドポイントは、トークンのアクティブな状態を取得するために使用されます。つまり、これを使用してアクセストークンを検証したり、更新したりできます。このエンドポイントは、機密クライアントによってのみ呼び出せます。
このエンドポイントで呼び出す方法の詳細は、OAuth 2.0 Token Introspection specification を参照してください。
2.1.1.6.1. application/jwt ヘッダーでトリガーされるイントロスペクションエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
Accept: application/json の代わりに、HTTP ヘッダー Accept: application/jwt を使用してイントロスペクションエンドポイントを呼び出すことができます。application/jwt の場合、レスポンスに JWT アクセストークンをすべて含む追加のクレーム jwt が含まれることがあります。これは、イントロスペクトされるトークンが 軽量アクセストークン であった場合に特に役立ちます。これには、クライアントの詳細設定の Support JWT claim in Introspection Response を有効にする必要があります。これにより、トークンのイントロスペクションがトリガーされます。
2.1.1.7. 動的クライアント登録エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
/realms/{realm-name}/clients-registrations/openid-connect
/realms/{realm-name}/clients-registrations/openid-connect
動的クライアント登録エンドポイントは、クライアントを動的に登録するのに使用されます。
詳細は、クライアント登録サービスの使用 の章と OpenID Connect Dynamic Client Registration specification を参照してください。
2.1.1.8. トークン失効エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
/realms/{realm-name}/protocol/openid-connect/revoke
/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
/realms/{realm-name}/protocol/openid-connect/auth/device
デバイス認可エンドポイントは、デバイスコードとユーザーコードを取得するために使用されます。これは、機密またはパブリッククライアントで呼び出すことができます。
このエンドポイントで呼び出す方法の詳細は、OAuth 2.0 Device Authorization Grant specification を参照してください。
2.1.1.10. バックチャネル認証エンドポイント リンクのコピーリンクがクリップボードにコピーされました!
/realms/{realm-name}/protocol/openid-connect/ext/ciba/auth
/realms/{realm-name}/protocol/openid-connect/ext/ciba/auth
バックチャネル認証エンドポイントは、クライアントによる認証リクエストを特定する auth_req_id を取得するために使用されます。これは、機密クライアントでのみ呼び出すことができます。
このエンドポイントで呼び出す方法の詳細は、OpenID Connect Client Initiated Backchannel Authentication Flow specification を参照してください。
このガイドの クライアント起点のバックチャネル認証グラント セクションおよび「サーバー管理ガイド」の クライアント起点のバックチャネル認証グラント セクションなど、Red Hat build of Keycloak ドキュメントの別の箇所も参照してください。