12.5. OpenID Connect v1.0 アイデンティティープロバイダー

Red Hat Single Sign-On は、OpenID Connect プロトコルに基づいてブローカーアイデンティティープロバイダーを使用できます。ユーザーの認証およびアクセスを承認するには、これらの IDP は仕様によって定義された Authorization Code Flow をサポートする必要があります。

OIDC プロバイダーの設定を開始するには、左側のメニュー項目 Identity Providers に移動し、Add provider ドロップダウンリストから OpenID Connect v1.0 を選択します。これにより、Add identity provider ページが表示されます。

ID プロバイダーの追加

oidc add identity provider

このページの初期設定オプションは、「一般的な IDP 設定」に記載されています。OpenID Connect 設定オプションも定義する必要があります。これらは、通信している OIDC IDP を定期的に説明しています。

表12.2 OpenID Connect の設定

設定説明

認証 URL

OIDC プロトコルで必要な承認 URL エンドポイント。

トークン URL

OIDC プロトコルで必要なトークン URL エンドポイント。

ログアウト URL

OIDC プロトコルで定義された URL エンドポイントをログアウトします。この値はオプションです。

バックチャネルログアウト

Backchannel ログアウトは、バックグラウンド (アウトオブバウンド) IDP への REST 呼び出しで、ユーザーをログアウトします。一部の IDP はブラウザークッキーを介してアイデンティティーセッションのみにアクセスできる可能性があるため、ブラウザーリダイレクトによってログアウトのみを実行できます。

ユーザー情報 URL

OIDC プロトコルで定義されたユーザー Info URL エンドポイント。これは、ユーザープロファイルの情報をダウンロードできるエンドポイントです。

クライアント認証

Authorization Code Flow で使用するクライアント認証メソッドの定義に切り替えます。秘密鍵で署名される JWT の場合、レルムの秘密鍵が使用されます。他の場合は、クライアントシークレットを定義する必要があります。詳細は、「Client Authentication specifications」を参照してください。

クライアント ID

このレルムは、外部 IDP への OIDC クライアントとして機能します。Authorization Code Flow を使用して外部 IDP と対話する場合は、レルムに OIDC クライアント ID が必要です。

Client Secret

このレルムは、Authorization Code Flow を使用する場合に使用するクライアントシークレットが必要です。このフィールドの値は、外部 vault からの値を参照できます。

issuer

IDP からの応答には発行者クレームが含まれる可能性があります。この設定値はオプションです。これが指定されている場合、この要求は指定した値に対して検証されます。

Default Scopes

認証要求で送信する OIDC スコープのスペース区切りの一覧。デフォルトは openid です。

Prompt

他の任意のスイッチ。これは OIDC 仕様で定義されているプロンプトパラメーターです。これにより、再認証やその他のオプションを強制的に実行できます。詳細は、仕様を参照してください。

クライアントからの prompt=none forward を許可します。

IDP が、prompt=none クエリーパラメーターを含む転送された認証要求を受け入れるかどうかを指定します。レルムが prompt=none で認証要求を受信すると、ユーザーが現在認証されており、通常はユーザーがログインしていない場合は login_required エラーを返します。ただし、デフォルトの IDP が認証リクエストに対して (kc_idp_hint クエリーパラグラフまたはレルムのデフォルト IDP を設定して) 決定できる場合は、prompt=none の認証要求をデフォルト IDP に転送して、ユーザーが現在認証されているかどうかを確認することができます。prompt=none が設定されたすべての IDP は、認証要求をリダイレクトする前にデフォルトの IDP が param をサポートしているかどうかを示すために、このスイッチが使用されます。

ユーザーが IDP で認証されていない場合は、クライアントは login_required エラーが出されます。ユーザーが現在 IDP で認証されている場合でも、認証またはユーザーの対話を必要とするページが無駄なページであっても、クライアントは interact_required エラーが出される可能性があります。これには、必要なアクション (パスワードの変更など)、合意画面、first broker login フローまたは post broker login フローで表示される画面が含まれます。

署名の検証

他の任意のスイッチ。これは、Red Hat Single Sign-On がこのアイデンティティープロバイダーによって署名された外部 ID トークンで署名を検証するかどうかを指定します。これがオンの場合、Red Hat Single Sign-On は外部 OIDC アイデンティティープロバイダーを把握しておく必要があります。設定方法については、以下を参照してください。警告: パフォーマンスの目的で、Red Hat Single Sign-On は外部 OIDC アイデンティティープロバイダーの公開鍵をキャッシュします。クライアントアイデンティティープロバイダーの秘密鍵が危険にさらされたと思われる場合は、キーの更新は明らかですが、キーの更新も適切です。詳細は、「キャッシュの消去」セクションを参照してください。

JWKS URL の使用

Validate Signatures が有効な場合に該当します。スイッチがオンの場合、アイデンティティープロバイダーの公開鍵は指定の JWKS URL からダウンロードされます。これにより、アイデンティティープロバイダーが新しいキーペアを生成する際に、新しい鍵が常に再ダウンロードされるため、柔軟性が高くなります。スイッチがオフの場合、Red Hat Single Sign-On DB からの公開鍵 (または証明書) が使用されるため、アイデンティティープロバイダーのペアが変更されるたびに新しい鍵も Red Hat Single Sign-On DB にインポートする必要があります。

JWKS URL

ID プロバイダーの JWK キーが保存される URL。詳細は、「JWK 仕様」を参照してください。外部 Red Hat Single Sign-On を ID プロバイダーとして使用する場合は、http://broker-keycloak:8180 でブローカー設定された Red Hat Single Sign-On が実行していて、そのレルムが test であることを全体として、http://broker-keycloak:8180/auth/realms/test/protocol/openid-connect/certs などの URL を使用できます。

公開鍵の検証

Use JWKS URL をオフにした場合のみ適用可能です。以下は、外部 IDP 署名の検証に使用される PEM 形式の公開鍵です。

公開鍵 ID の検証

Use JWKS URL をオフにした場合のみ適用可能です。このフィールドは PEM 形式の公開鍵の ID を指定します。この設定値はオプションです。キーから計算する標準的な方法がないため、さまざまな外部アイデンティティープロバイダーが Red Hat Single Sign-On とは異なるアルゴリズムを使用する場合があります。このフィールドの値が指定されていない場合、外部 IDP によって送信されるキー ID に関係なく、上記で指定されたパブリックキーはすべての要求に使用されます。設定されている場合、このフィールドの値は、そのようなプロバイダーからの署名を検証するために Red Hat Single Sign-On によって使用されるキー ID として機能し、IDP で指定されるキー ID と一致する必要があります。

OpenID プロバイダーメタデータをポイントする URL またはファイルを指定してこの設定データをすべてインポートすることもできます (OIDC 検出仕様を参照)。Red Hat Single Sign-On 外部 IDP に接続する場合は、URL <root>/auth/realms/{realm-name}/.well-known/openid-configuration から IDP 設定をインポートできます。このリンクは、IDP に関するメタデータを記述する JSON ドキュメントです。