12.2. SAML クライアントの作成

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

手順

  1. メニューで Clients をクリックします。
  2. Create をクリックして Add Client ページに移動します。

    クライアントの追加

    add client saml

  3. クライアントの クライアント ID を入力します。これは通常 URL であり、アプリケーションによって送信される SAML リクエストの issuer 値になります。
  4. Client Protocol ドロップダウンボックスで saml を選択します。
  5. クライアント SAML エンドポイント URL を入力します。この URL には、Red Hat Single Sign-On サーバーが SAML 要求および制限を送信する先を指定します。アプリケーションには SAML 要求を処理するための URL は 1 つあります。クライアントの Settings タブで複数の URL を設定できます。
  6. Save をクリックします。このアクションにより、クライアントが作成され、Settings タブが表示されます。

    クライアントの設定

    client settings saml

    以下の一覧では、各設定について説明します。

    Client ID
    OIDC 要求で使用される英数字 ID 文字列および Red Hat Single Sign-On データベースでクライアントを特定します。この値は、AuthNRequests で送信される発行者の値と一致する必要があります。Red Hat Single Sign-On は、Authn SAML 要求から発行者をプルし、この値によってクライアントに一致します。
    名前
    Red Hat Single Sign-On UI 画面のクライアントの名前。名前をローカライズするには、代替文字列値を設定します。たとえば、${myapp} などの文字列値です。詳細は、サーバー開発者ガイド を参照してください。
    Description
    クラスターの説明。この設定はローカライズすることもできます。
    Enabled
    OFF に設定すると、クライアントは認証を要求できません。
    Consent Required
    ON に設定すると、そのアプリケーションへのアクセスを許可する同意ページが表示されます。このページには、クライアントがアクセスできる情報のメタデータも表示されます。Facebook へのソーシャルログインを行う場合は、通常同様のページが表示されます。Red Hat Single Sign-On は同じ機能を提供します。
    AuthnStatement の追加
    SAML ログイン応答は、使用される認証方法 (パスワードなど) と、ログインのタイムスタンプおよびセッションの有効期限を指定できます。Include AuthnStatement は、AuthnStatement 要素がログイン応答に含まれるように、デフォルトで有効になっています。これを OFF に設定すると、クライアントが最大セッションの長さを判別できなくなるので、期限切れにならないクライアントセッションが作成できます。
    サインインドキュメント
    ON に設定すると、Red Hat Single Sign-On はレルムの秘密鍵を使用してドキュメントに署名します。
    REDIRECT 署名キー検索の最適化

    ON に設定すると、SAML プロトコルメッセージには Red Hat Single Sign-On ネイティブ拡張が含まれます。この拡張には、署名キー ID のヒントが含まれています。SP は、鍵を使用した署名の検証を試みる代わりに、署名検証の拡張を使用します。

    このオプションは、署名がクエリーパラメーターで転送され、この情報は署名情報では見つからない REDIRECT バインディングに適用されます。これは、キー ID が常にドキュメント署名に含まれる POST バインディングメッセージとは対照的です。

    このオプションは、Red Hat Single Sign-On サーバーおよびアダプターが IDP および SP を提供する場合に使用されます。このオプションは、Sign Documents がオンの場合にのみ関連します。

    アサーションへの署名
    アサーションは署名され、SAML XML Auth 応答に組み込まれます。
    Signature Algorithm (署名アルゴリズム)
    SAML ドキュメントの署名に使用されるアルゴリズム。
    SAML Signature Key Name

    POST バインディングを使用して送信される署名付き SAML ドキュメントには、 KeyName 要素に署名キーの ID が含まれています。このアクションは、SAML 署名キー名 のオプションを使用して制御できます。このオプションは、Keyname の内容を制御します。

    • KEY_ID: KeyName にはキー ID が含まれます。このオプションはデフォルトのオプションです。
    • CERT_SUBJECT: KeyName には、レルムキーに対応する証明書のサブジェクトが含まれます。このオプションは、Microsoft Active Directory Federation Services で必要です。
    • NONE: KeyName ヒントは、SAML メッセージから完全に省略されます。
    正規化メソッド
    XML 署名の正規化メソッド。
    アサーションの暗号化
    SAML ドキュメントのアサーションをレルムの秘密鍵で暗号化します。AES アルゴリズムは、128 ビットのキーサイズを使用します。
    クライアント署名が必要です
    Client Signature Required が有効な場合は、クライアントからのドキュメントは署名されている必要があります。Red Hat Single Sign-On は、クライアントパブリックキーまたは Keys タブで証明書を使用してこの署名を検証します。
    POST バインディングの強制
    デフォルトでは、Red Hat Single Sign-On は元のリクエストの最初の SAML バインディングを使用して応答します。Force POST Binding を有効にすると、Red Hat Single Sign-On は元の要求がリダイレクトバインディングを使用した場合でも SAML POST バインディングを使用して応答します。
    フロントチャンネルのログアウト
    Front Channel Logout が有効になっている場合、アプリケーションのログアウトにはブラウザーのリダイレクトが必要です。たとえば、アプリケーションでは Cookie をリセットする必要がありますが、リダイレクトでのみ実行可能です。Front Channel Logout が無効な場合は、Red Hat Single Sign-On はバックグラウンドの SAML 要求を呼び出して、アプリケーションからログアウトします。
    名前 ID フォーマットの強制
    要求に名前 ID ポリシーがある場合は無視し、管理コンソールで設定された値を Name ID Format で使用されます。
    名前 ID 形式
    サブジェクトの名前 ID 形式。この形式は、要求に名前 ID ポリシーが指定されていない場合や、Force Name ID Format 属性が ON に設定されている場合に使用されます。
    Root URL
    Red Hat Single Sign-On が設定済みの相対 URL を使用する場合には、この値は URL の前に追加されます。
    Valid Redirect URIs
    URL パターンに入力し、+ 記号をクリックして追加します。- 記号をクリックして削除します。Save をクリックして変更を保存します。ワイルドカードの値は URL の最後にのみ使用できます。(例: 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。
    Logout Service の Post バインディング URL
    Logout Service の POST バインディング URL。
    Logout Service のリダイレクトバインディング URL
    Logout Service のリダイレクトバインディング URL。
    Logot Service のアーティファクトバインディング URL
    Logout Service の Artifact リダイレクトバインディング URL。Force Artifact Binding オプションと共に設定すると、Artifact バインディングがログインフローとログアウトフローの両方で強制的に実行されます。このプロパティーが設定されていない限り、Artifact バインディングはログアウトには使用されません。
    アーティファクトバインディング URL
    HTTP アーティファクトメッセージの送信先となる URL。
    アーティファクト解決サービス
    ArtifactResolve メッセージの送信先となるクライアント SOAP エンドポイントの URL。

12.2.1. IDP でのログイン

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 に追加するだけです。