2.4. その他の OpenID Connect ライブラリー


Red Hat Single Sign-On は、通常、使用が簡単で、Red Hat Single Sign-On との統合を改善できるアダプターによって提供されます。ただし、プログラミング言語、フレームワーク、またはプラットフォームでアダプターが利用できない場合は、代わりに汎用 OpenID Connect Relying Party (RP) ライブラリーを使用することを選択できます。本章では、Red Hat Single Sign-On に固有の詳細を説明します。また、特定のプロトコルの詳細は含まれません。詳細は、OpenID Connect 仕様 および OAuth2 仕様 を参照してください。

2.4.1. エンドポイント

理解すべき最も重要なエンドポイントは、よく知られている 設定エンドポイントです。Red Hat Single Sign-On の OpenID Connect 実装に関連するエンドポイントおよびその他の設定オプションをリスト表示します。エンドポイントは次のとおりです。

/realms/{realm-name}/.well-known/openid-configuration
Copy to Clipboard

完全な URL を取得するには、Red Hat Single Sign-On のベース URL を追加し、{realm-name} をレルムの名前に置き換えます。以下に例を示します。

http://localhost:8080/auth/realms/master/.well-known/openid-configuration

一部の RP ライブラリーは、このエンドポイントから必要なすべてのエンドポイントを取得しますが、その他のライブラリーでは、エンドポイントを個別にリスト表示しないといけない場合があります。

2.4.1.1. 認可エンドポイント

/realms/{realm-name}/protocol/openid-connect/auth
Copy to Clipboard

認可エンドポイントはエンドユーザーの認証を実行します。これは、ユーザーエージェントをこのエンドポイントにリダイレクトすることで行います。

詳細は、OpenID Connect 仕様の 認可エンドポイント セクションを参照してください。

2.4.1.2. トークンエンドポイント

/realms/{realm-name}/protocol/openid-connect/token
Copy to Clipboard

トークンエンドポイントは、トークンの取得に使用されます。トークンは、認可コードを調べるか、使用するフローに応じて認証情報を直接指定して取得できます。トークンエンドポイントは、有効期限が切れたときに新しいアクセストークンの取得にも使用されます。

詳細は、OpenID Connect 仕様の トークンエンドポイント セクションを参照してください。

2.4.1.3. userInfo エンドポイント

/realms/{realm-name}/protocol/openid-connect/userinfo
Copy to Clipboard

userinfo エンドポイントは、認証されたユーザーについての標準要求を返し、ベアラートークンによって保護されます。

詳細は、OpenID Connect 仕様の userInfo エンドポイント セクションを参照してください。

2.4.1.4. ログアウトエンドポイント

/realms/{realm-name}/protocol/openid-connect/logout
Copy to Clipboard

ログアウトエンドポイントは、認証されたユーザーをログアウトします。

ユーザーエージェントはエンドポイントにリダイレクトできます。この場合は、アクティブなユーザーセッションがログアウトされます。その後、ユーザーエージェントはアプリケーションにリダイレクトされます。

エンドポイントはアプリケーションによって直接呼び出すこともできます。このエンドポイントを直接呼び出すには、更新トークンとクライアントの認証に必要な認証情報を追加する必要があります。

2.4.1.5. 証明書エンドポイント

/realms/{realm-name}/protocol/openid-connect/certs
Copy to Clipboard

証明書エンドポイントは、レルムが有効にした公開鍵を返し、JSON Web Key (JWK) としてエンコードされます。レルム設定によっては、トークンの検証に 1 つ以上のキーが有効になります。詳細は、Server Administration Guide および JSON Web Key 仕様 を参照してください。

2.4.1.6. イントロスペクションエンドポイント

/realms/{realm-name}/protocol/openid-connect/token/introspect
Copy to Clipboard

イントロスペクションエンドポイントは、トークンのアクティブな状態を取得するために使用されます。つまり、これを使用してアクセストークンを検証したり、更新したりできます。これは、機密クライアントでのみ呼び出すことができます。

このエンドポイントで呼び出す方法の詳細については、OAuth 2.0 Token Introspection specification を参照してください。

2.4.1.7. 動的クライアント登録エンドポイント

/realms/{realm-name}/clients-registrations/openid-connect
Copy to Clipboard

動的クライアント登録エンドポイントは、クライアントを動的に登録するのに使用されます。

詳細は、クライアント登録 および OpenID 接続動的クライアント登録仕様 の章を参照してください。

2.4.1.8. トークン失効エンドポイント

/realms/{realm-name}/protocol/openid-connect/revoke
Copy to Clipboard

トークン失効エンドポイントは、トークンの取り消しに使用されます。このエンドポイントでは、更新トークンとアクセストークンの両方がサポートされます。

このエンドポイントで呼び出す方法の詳細については、OAuth 2.0 Token Revocation specification を参照してください。

2.4.1.9. デバイス認可エンドポイント

/realms/{realm-name}/protocol/openid-connect/auth/device
Copy to Clipboard

デバイス認可エンドポイントは、デバイスコードとユーザーコードを取得するために使用されます。これは、機密またはパブリッククライアントで呼び出すことができます。

このエンドポイントで呼び出す方法の詳細については、OAuth 2.0 Device Authorization Grant specification を参照してください。

2.4.1.10. backchannel 認証エンドポイント

/realms/{realm-name}/protocol/openid-connect/ext/ciba/auth
Copy to Clipboard

backchannel 認証エンドポイントは、クライアントによる認証要求を識別する auth_req_id を取得するために使用されます。これは、機密クライアントでのみ呼び出すことができます。

このエンドポイントで呼び出す方法の詳細は、OpenID Connect Client Initiated Backchannel Authentication Flow specification を参照してください。

また、本書の Client Initiated Backchannel Authentication Grant セクションおよび Server Administration Guide の Client Initiated Backchannel Authentication Grant セクションなど、Red Hat Single Sign-On ドキュメントの他の部分についても参照してください。

2.4.2. アクセストークンの検証

Red Hat Single Sign-On が発行するアクセストークンを手動で検証する必要がある場合には、イントロスペクションエンドポイント を呼び出すことができます。この方法のマイナス面は、Red Hat Single Sign-On サーバーへのネットワーク呼び出しを行う必要があることです。同時に実行される検証要求が多すぎると、これは遅くなり、サーバーが過負荷になる可能性があります。Red Hat Single Sign-On が発行するアクセストークンは、JSON Web Signature (JWS) を使用してデジタル署名およびエンコードされた JSON Web Tokens (JWT) です。この方法でエンコードされるため、発行したレルムの公開鍵を使用してアクセストークンをローカルで検証できます。レルムの公開鍵を検証コードでハードコードするか、JWS 内に埋め込まれたキー ID (KID) で 証明書エンドポイント を使用して公開鍵を検索してキャッシュします。コーディングする言語に応じて、JWS の検証に役立つサードパーティーのライブラリーが多数あります。

2.4.3. フロー

2.4.3.1. 認可コード

Authorization Code フローは、ユーザーエージェントを Red Hat Single Sign-On にリダイレクトします。Red Hat Single Sign-On で正常に認証されたら、認可コードが作成され、ユーザーエージェントはアプリケーションにリダイレクトされます。その後、アプリケーションは認証情報と共に認可コードを使用して、Red Hat Single Sign-On からアクセストークン、更新トークン、および ID トークンを取得します。

フローは Web アプリケーションにターゲットとして設定されていますが、ユーザーエージェントを組み込むことができるモバイルアプリケーションなど、ネイティブアプリケーションに推奨されます。

詳細は、OpenID Connect 仕様の Authorization Code Flow を参照してください。

2.4.3.2. 暗黙的

暗黙的フローリダイレクトは認可コードフローと同じような機能ですが、アクセストークンおよび ID トークンが返される認可コードを返す代わりに、このフローが返されます。これにより、追加の呼び出しでアクセストークンの認可コードを交換する必要がなくなります。ただし、更新トークンは含まれません。その結果、有効期限の長いアクセストークンを許可する必要があります。これは、これらを無効にするのが非常に難しいため、問題があります。または、最初のアクセストークンの期限が切れたら、新しいアクセストークンを取得するために新しいリダイレクトが必要になります。暗黙的フローは、アプリケーションがユーザーを認証し、ログアウト自体を処理する場合に便利です。

また、アクセストークンと認可コードの両方が返されるハイブリッドフローもあります。

注意すべき点の 1 つは、アクセストークンが Web サーバーのログやブラウザーの履歴から漏洩する可能性があるため、暗黙的なフローとハイブリッドフローの両方に潜在的なセキュリティーリスクがあることです。これは、アクセストークンに短い有効期限を使用することでいくらか軽減されます。

詳細については、OpenID Connect 仕様の Implicit Flow を参照してください。

2.4.3.3. リソースオーナーパスワード認証情報

Red Hat Single Sign-On の Direct Grant (Direct Grant) と呼ばれるリソースオーナーパスワード認証情報を使用すると、ユーザー認証情報をトークンと交換できます。絶対に必要な場合を除き、このフローの使用は推奨されません。これは、従来のアプリケーションおよびコマンドラインインターフェイスなどで役に立ちます。

このフローの使用には、次のようないくつかの制限があります。

  • ユーザーの認証情報ががアプリケーションに公開される
  • アプリケーションにはログインページが必要です。
  • アプリケーションは認証スキームを認識する必要があります。
  • 認証フローへの変更にはアプリケーションへの変更が必要です。
  • アイデンティティーブローカーまたはソーシャルログインはサポートされません。
  • フロー (ユーザー自己登録、必要なアクションなど) はサポートされません。

クライアントで Resource Owner Password Credentials の使用を許可するには、クライアントに Direct Access Grants Enabled オプションを有効にする必要があります。

このフローは OpenID Connect に含まれず、OAuth 2.0 仕様の一部です。

詳細は、OAuth 2.0 仕様の Resource Owner Password Credentials Grant の章を参照してください。

2.4.3.3.1. CURL の使用例

以下の例は、ユーザー名 user およびパスワード password を使用して、レルムの master ユーザーのアクセストークンを取得する方法を示しています。この例では、機密クライアント myclient を使用しています。

curl \
  -d "client_id=myclient" \
  -d "client_secret=40cc097b-2a57-4c17-b36a-8fdf3fc2d578" \
  -d "username=user" \
  -d "password=password" \
  -d "grant_type=password" \
  "http://localhost:8080/auth/realms/master/protocol/openid-connect/token"
Copy to Clipboard

2.4.3.4. クライアントクレデンシャル

クライアント認証情報は、クライアント (アプリケーションおよびサービス) がユーザーに代わってではなく、自身に代わってアクセスを取得する場合に使用されます。たとえば、特定のユーザーではなく、一般的なシステムに変更を適用するバックグラウンドサービスなどに役立ちます。

Red Hat Single Sign-On は、クライアントが秘密または公開鍵/秘密鍵のいずれかを使用して認証するためのサポートを提供します。

このフローは OpenID Connect に含まれず、OAuth 2.0 仕様の一部です。

詳細は、OAuth 2.0 仕様の Client Credentials Grant の章を参照してください。

2.4.3.5. デバイス認可の付与

Device Authorization Grant は、入力機能が制限されているか、適切なブラウザーがないインターネット接続デバイスで実行されているクライアントによって使用されます。アプリケーションは Red Hat Single Sign-On にデバイスコードとユーザーコードを要求します。Red Hat Single Sign-On は、デバイスコードとユーザーコードを作成します。Red Hat Single Sign-On は、デバイスコードおよびユーザーコードなどの応答をアプリケーションに返します。次に、アプリケーションはユーザーにユーザーコードと検証 URI を提供します。ユーザーは検証 URI にアクセスし、別のブラウザーを使用して認証されます。アプリケーションは、Red Hat Single Sign-On がユーザー認可を完了するまで、Red Hat Single Sign-On を繰り返しポーリングします。ユーザー認証が完了すると、アプリケーションはデバイスコードを取得します。その後、アプリケーションは認証情報と共にデバイスコードを使用して、Red Hat Single Sign-On からアクセストークン、更新トークン、および ID トークンを取得します。

詳細は、OAuth 2.0 Device Authorization Grant specification を参照してください。

2.4.3.6. Client Initiated Backchannel Authentication Grant

Client Initiated Backchannel Authentication Grant は、OAuth 2.0 の認可コード付与のように、ユーザーのブラウザーを介してリダイレクトせずに、OpenID プロバイダーと直接通信することで認可フローを開始するクライアントによって使用されます。

クライアントは、クライアントによる認証要求を識別する auth_req_id を Red Hat Single Sign-On に要求します。Red Hat Single Sign-On は auth_req_id を作成します。

この auth_req_id を受信した後、このクライアントは、ユーザーが認証されるまで、auth_req_id と引き換えに、Red Hat Single Sign-On からアクセストークン、更新トークン、および ID トークンを取得するために Red Hat Single Sign-On を繰り返しポーリングする必要があります。

クライアントが ping モードを使用する場合は、トークンエンドポイントを繰り返しポーリングする必要はありませんが、Red Hat Single Sign-On から指定された Client Notification Endpoint に送信される通知を待つことができます。Client Notification Endpoint は、Red Hat Single Sign-On 管理コンソールで設定できます。Client Notification Endpoint のコントラクトの詳細は、CIBA 仕様を参照してください。

詳細は、OpenID Connect Client Initiated Backchannel Authentication Flow specification を参照してください。

また、本書の backchannel 認証エンドポイント およびサーバー管理ガイドの Client Initiated Backchannel Authentication Grant セクションなど、Red Hat Single Sign-On ドキュメントの別の部分についても参照してください。FAPI CIBA コンプライアンスの詳細は、本書の FAPI セクションを参照してください。

2.4.4. リダイレクト URI

リダイレクトベースのフローを使用する場合は、クライアントに有効なリダイレクト URI を使用することが重要です。リダイレクト URI は可能な限り具体的にする必要があります。これは特に、クライアント側の (パブリッククライアント) アプリケーションに適用されます。これを行わないと、以下が発生する可能性があります。

  • オープンリダイレクト - これにより、攻撃者はドメインから来ているように見えるなりすましリンクを作成できます
  • 不正なエントリー - ユーザーがすでに Red Hat Single Sign-On で認証されている場合、攻撃者は、ユーザーの知らないうちにユーザーをリダイレクトすることでアクセスを取得するようにリダイレクト URI が正しく設定されていないパブリッククライアントを使用できます。

Web アプリケーションで実稼働環境では常にすべてのリダイレクト URI に https を使用します。http へのリダイレクトを許可しないでください。

いくつかの特別なリダイレクト URI もあります。

http://localhost
このリダイレクト URI はネイティブアプリケーションに役立ち、ネイティブアプリケーションは認可コードの取得に使用できるランダムポートで Web サーバーを作成できます。このリダイレクト URI は任意のポートを許可します。
urn:ietf:wg:oauth:2.0:oob
クライアント (またはブラウザーが利用できない) で Web サーバーを起動できない場合は、特別な urn:ietf:wg:oauth:2.0:oob リダイレクト URI を使用できます。このリダイレクト URI を使用すると、Red Hat Single Sign-On は、タイトルとページ上のボックスにコードを含むページを表示します。アプリケーションは、ブラウザーののタイトルが変更されたことを検出するか、ユーザーがコードを手動でアプリケーションにコピーして貼り付けることができます。このリダイレクト URI を使用すると、ユーザーが別のデバイスを使用してアプリケーションに貼り付けるコードを取得することもできます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat