8.2. SAML クライアント

Red Hat Single Sign-On は、登録したアプリケーションの SAML 2.0 をサポートします。POST およびリダイレクトバインディングの両方がサポートされます。クライアント署名の検証を必要とし、サーバーの署名や応答の暗号化も選択できます。

SAML クライアントを作成するには、左メニュー項目の Clients に移動します。このページでは、右側に Create ボタンが表示されます。

Clients

clients

これにより、Add Client ページが表示されます。

クライアントの追加

add client saml

クライアントの クライアント ID を入力します。これは通常 URL であり、アプリケーションによって送信される SAML リクエストの issuer 値になります。Client Protocol ドロップダウンボックスで次の saml を選択します。最後に、クライアント SAML エンドポイント URL を入力します。Red Hat Single Sign-On サーバーが SAML 要求および制限を送信する URL を入力します。通常、アプリケーションには SAML 要求を処理するための URL は 1 つだけあります。バインディングに異なる URL がある場合は、クライアントの Settings タブでこれを修正できます。Save をクリックします。これでクライアントが作成され、クライアント Settings タブが表示されます。

クライアントの設定

client settings saml

クライアント ID
この値は、AuthNRequests で送信される発行者の値と一致する必要があります。Red Hat Single Sign-On は、Authn SAML 要求から発行者をプルし、この値によってクライアントに一致します。
名前
これは、Red Hat Single Sign-On UI 画面に表示されるたびに、クライアントの表示名です。代替文字列の値 (例: ${myapp}) を設定して、このフィールドの値をローカライズできます。詳細は、『サーバー開発者ガイド』を参照してください。
説明
これはクライアントの説明を指定します。これはローカライズすることもできます。
有効
これがオフになると、クライアントは認証を要求することができません。
Consent Required
これがオンの場合、ユーザーにはそのアプリケーションへのアクセス権限を付与するかどうかをユーザーに尋ねるメッセージが表示されます。また、クライアントがアクセスする情報を正確に認識できるように、クライアントの対象となるメタデータも表示します。Google へのソーシャルログインを行った場合には、多くの場合、同様のページが表示されます。Red Hat Single Sign-On は同じ機能を提供します。
AuthnStatement の追加
SAML ログイン応答は、使用される認証方法 (パスワードなど) と、ログインのタイムスタンプおよびセッションの有効期限を指定できます。これはデフォルトでは有効になっており、AuthStatement 要素がログイン応答に含まれることを意味します。これを off に設定すると、クライアントが最大セッションの最大長さを判断できなくなります。そのため、クライアントセッションの期限が切れなくなる可能性があることに注意してください。
サインインドキュメント
Red Hat Single Sign-On を有効にすると、レルムの秘密鍵を使用してドキュメントに署名されます。
REDIRECT 署名キー検索の最適化
オンになると、SAML プロトコルメッセージには、署名キー ID を使用したヒントが含まれる Red Hat Single Sign-On ネイティブエクステンションが含まれます。SP はこの拡張を認識すると、既知のキーで署名を検証しようとする代わりに、署名の検証に使用できます。このオプションは、署名がクエリーパラメーターで転送される REDIRECT バインディングのみに適用されます (キー ID は常にドキュメント署名に含まれる POST バインディングメッセージ に類似しています)。現在、IDP と SP の両方が Red Hat Single Sign-On サーバーおよびアダプターによって提供される状況に関連します。このオプションは、Sign Documents がオンの場合にのみ関連します。
アサーションへの署名
Sign Documents は、ドキュメント全体に署名します。この設定では、アサーションも SAML XML 認証応答内に署名され、組み込まれます。
署名アルゴリズム
SAML ドキュメントの署名には、さまざまなアルゴリズムを選択します。
SAML 署名キー名
署名付き SAML ドキュメントには、POST バインディング経由で送信される署名済みのほか、KeyName 要素の署名キーの識別が含まれます。これには、Red Hat Single Sign-On のキー ID が含まれます。ただし、さまざまなベンダーが異なるキー名があるか、キー名が全くない場合もあります。このスイッチは、KeyName に鍵 ID (KEY_ID オプション) が含まれるか、レルムキーに対応する証明書のサブジェクト (CERT_SUBJECT オプション (Microsoft Active Directory Federation Services に必要なもの) など)、または SAML メッセージからキー名のヒントが完全に省略される (NONE オプション) かどうかを制御します。
正規化メソッド
XML 署名の正規化メソッド。
アサーションの暗号化
レルムの秘密鍵を使用して、SAML ドキュメントのアサーションを暗号化します。AES アルゴリズムはキーサイズは 128 ビットで使用されます。
クライアント署名が必要です
クライアントから送られるドキュメントが署名されるはずです。Red Hat Single Sign-On は、クライアントパブリックキーまたは SAML Keys タブで証明書を使ってこの署名を検証します。
POST バインディングの強制
デフォルトでは、Red Hat Single Sign-On は元のリクエストの最初の SAML バインディングを使用して応答します。このスイッチを有効にすると、元の要求がリダイレクトバインディングであっても、Red Hat Single Sign-On が常に SAML POST バインディングを使用して応答するように強制されます。
フロントチャンネルのログアウト
true の場合、このアプリケーションではログアウトを実行するためにブラウザーリダイレクトが必要になります。たとえば、アプリケーションでは Cookie をリセットする必要がありますが、リダイレクトでのみ実行可能です。このスイッチが false の場合、Red Hat Single Sign-On はバックグラウンド SAML 要求を呼び出してアプリケーションからログアウトします。
名前 ID フォーマットの強制
要求に名前 ID ポリシーがある場合は無視し、管理コンソールで設定された値を Name ID Format で使用されます。
名前 ID 形式
サブジェクトの名前 ID 形式。リクエストに名前 ID ポリシーが指定されていない場合や、強制名 ID Format 属性が true の場合、この値が使用されます。各形式に使用されるプロパティーは次のとおりです。
Root URL
Red Hat Single Sign-On で設定された相対 URL が使用される場合、この値はそれらの先頭に追加されます。
Valid Redirect URIs
これはオプションのフィールドです。URL パターンに入力し、+ 記号をクリックして追加します。削除する URL の横にある - 記号をクリックします。Save ボタンをクリックする必要があることに注意してください。ワイルドカード (*) は URI の最後にのみ許可されます (例: http://host.com/*)。このフィールドは、正確な SAML エンドポイントが登録されておらず、Red Hat Single Sign-On がリクエストから Assertion Consumer URL をプルする場合に使用されます。
Base URL
Red Hat Single Sign-On をクライアントにリンクする必要がある場合は、この URL が使用されます。
マスター SAML 処理 URL
この URL はすべての SAML リクエストに使用され、応答は SP に転送されます。これは、Assertion Consumer Service URL および Single Logout Service URL として使用されます。ログインリクエストに Assertion Consumer Service URL を含めますが、この URL は登録された Valid Redirect URI パターンによって検証される必要があります。
assertion Consumer Service POST バインディング URL
Assertion Consumer Service の POST バインディング URL。
assertion Consumer Service リダイレクトバインディング URL
Assertion Consumer Service のリダイレクトバインディング URL。
サービス POST バインディングのログアウト URL
Logout Service の POST バインディング URL。
サービスリダイレクトバインディング URL をログアウトする
Logout Service のリダイレクトバインディング URL。

8.2.1. IDP Initiated ログイン

IDP Initiated Login は、特定のアプリケーション/クライアントにログインする Red Hat Single Sign-On サーバーでエンドポイントを設定することができる機能です。クライアントの Settings タブで、IDP Initiated SSO URL Name を指定する必要があります。これは、空白のない単純な文字列です。この後、root/auth/realms/{realm}/protocol/saml/clients/{url-name} の URL でクライアントを参照できます。

IDP によって開始されたログイン実装は REDIRECT バインディングで POST を優先します (詳細は saml バインディングを参照)。そのため、最終バインディングおよび SP URL は以下の方法で選択されます。

  1. 特定の Assertion Consumer Service POST Binding URL が定義される場合 (クライアント設定の Fine Grain SAML Endpoint Configuration 設定)。POST バインディングはその URL で使用されます。
  2. 一般的な Master SAML Processing URL が指定されている場合には、この一般的な URL ではなく POST バインディングが使用されます。
  3. 最後に、(Fine Grain SAML Endpoint Configuration 内で) Assertion Consumer Service Redirect Binding URL が設定されている場合は、この URL で REDIRECT バインディングが使用されます。

クライアントに特別なリレー状態が必要な場合は、IDP Initiated SSO Relay State フィールドの 設定 タブで設定することもできます。または、ブラウザーは RelayState クエリーパラメーター (つまり root/auth/realms/{realm}/protocol/saml/clients/{url-name}?RelayState=thestate) にリレー状態を指定することもできます。

アイデンティティーブローカー を使用する場合は、外部 IDP からクライアントの IDP 開始ログインを設定できます。前述のように、ブローカー IDP で IDP 開始ログインに実際のクライアントが設定されている。外部 IDP は、ブローカーを示す特別な URL を参照するアプリケーションの IDP Initiated ログインにクライアントを設定し、仲介 IDP で選択したクライアントの IDP Initiated ログインエンドポイントを表す必要があります。これは、外部 IDP のクライアント設定を意味します。

  • IDP Initiated SSO URL Name は、IDP Initiated Login initial point として公開される名前に設定されます。
  • Fine Grain SAML Endpoint Configuration セクションの Assertion Consumer Service POST Binding URL は、broker-root/auth/realms/{broker-realm}/broker/{idp-name}/endpoint/clients/{client-id} の URL に設定する必要があります。ここでは、以下のようになります。

    • broker-root はベースブローカー URL です。
    • broker-realm は、外部 IDP が宣言されるブローカーのレルムの名前です。
    • IDP-name はブローカーの外部 IDP の名前です。
    • client-id は、ブローカーで定義された SAML クライアントの IDP Initiated SSO URL Name 属性の値です。このクライアントは、外部 IDP から IDP Initiated ログインで利用できます。

ブローカー IDP から外部 IDP のクライアント設定に基本的なクライアント設定をインポートできることに注意してください。ブローカー IDP でアイデンティティープロバイダーの設定から利用可能な SP 記述子 を使用し、clients/client-id をエンドポイント URL に追加するだけです。