12.2. SAML クライアントの作成
Red Hat build of Keycloak は、登録済みアプリケーションの SAML 2.0 をサポートします。POST およびリダイレクトバインディングがサポートされます。クライアント署名の検証を要求することもできます。サーバー署名や暗号化応答も可能です。
手順
- メニューで Clients をクリックします。
- Create client をクリックして、Create client ページに移動します。
Client type を SAML に設定します。
Create client
- クライアントの クライアント ID を入力します。これは通常 URL であり、アプリケーションによって送信される SAML リクエストの issuer 値になります。
- Save をクリックします。このアクションにより、クライアントが作成され、Settings タブが表示されます。
次のセクションでは、このタブの各設定を説明します。
12.2.1. Settings タブ
Settings タブには、このクライアントを設定するための多くのオプションが含まれています。
クライアントの設定
12.2.1.1. 一般設定
- Client ID
- OIDC リクエストおよび Red Hat build of Keycloak データベースでクライアントを識別するために使用される英数字の ID 文字列です。この値は、AuthNRequests で送信される発行者の値と一致する必要があります。Red Hat build of Keycloak は、Authn SAML 要求から発行者をプルし、この値によってクライアントと照合します。
- Name
- Red Hat build of Keycloak UI 画面に表示されるクライアントの名前。名前をローカライズするには、代替文字列値を設定します。たとえば、${myapp} などの文字列値です。詳細は、サーバー開発者ガイド を参照してください。
- Description
- クライアントの説明。この設定はローカライズすることもできます。
- Always Display in Console
- このユーザーがアクティブなセッションを持っていない場合でも、常にこのクライアントをアカウントコンソールにリストします。
12.2.1.2. Access Settings
- Root URL
- Red Hat build of Keycloak が設定された相対 URL を使用する場合、この値は URL の先頭に付加されます。
- Home URL
- Red Hat build of Keycloak をクライアントにリンクする必要がある場合は、この URL が使用されます。
- Valid Redirect URIs
- URL パターンに入力し、+ 記号をクリックして追加します。- 記号をクリックして削除します。Save をクリックして変更を保存します。ワイルドカードの値は URL の最後にのみ使用できます。(例: http://host.com/*$$)。このフィールドは、正確な SAML エンドポイントが登録されておらず、Red Hat build of Keycloak がリクエストから Assertion Consumer URL をプルする場合に使用されます。
- IDP-Initiated SSO URL name
- IDP Initiated SSO を実行するときにクライアントを参照する URL フラグメント名。これを空のままにすると、IDP Initiated SSO が無効になります。ブラウザーから参照する URL は次のようになります: server-root/realms/{realm}/protocol/saml/clients/{client-url-name}
- IDP Initiated SSO Relay State
- IDP Initiated SSO を行いたい場合に、SAML リクエストで送信するリレー状態。
- Master SAML Processing URL
この URL はすべての SAML 要求に使用され、応答は SP に転送されます。これは、Assertion Consumer Service URL および Single Logout Service URL として使用されます。
ログイン要求に Assertion Consumer Service URL が含まれる場合には、これらのログイン要求が優先されます。この URL は、登録された Valid Redirect URI パターンで妥当性を検証する必要があります。
12.2.1.3. SAML 機能
- Name ID Format
- サブジェクトの名前 ID 形式。この形式は、要求に名前 ID ポリシーが指定されていない場合や、Force Name ID Format 属性が ON に設定されている場合に使用されます。
- Force Name ID Format
- 要求に名前 ID ポリシーがある場合は無視し、管理コンソールで設定された値を Name ID Format で使用されます。
- Force POST Binding
- デフォルトでは、Red Hat build of Keycloak は、元の要求の最初の SAML バインディングを使用して応答します。Force POST Binding を有効にすると、Red Hat build of Keycloak は元の要求がリダイレクトバインディングを使用した場合でも SAML POST バインディングを使用して応答します。
- Force artifact binding
- 有効にすると、SAML ARTIFACT バインディングシステムを通じて応答メッセージがクライアントに返されます。
- Include AuthnStatement
- SAML ログイン応答は、使用される認証方法 (パスワードなど) と、ログインのタイムスタンプおよびセッションの有効期限を指定できます。Include AuthnStatement は、AuthnStatement 要素がログイン応答に含まれるように、デフォルトで有効になっています。これを OFF に設定すると、クライアントが最大セッションの長さを判別できなくなるので、期限切れにならないクライアントセッションが作成できます。
- Include OneTimeUse Condition
- 有効にすると、ログイン応答に OneTimeUse 条件が含まれます。
- Optimize REDIRECT signing key lookup
ON に設定すると、SAML プロトコルメッセージには Red Hat build of Keycloak ネイティブの拡張が含まれます。この拡張には、署名キー ID のヒントが含まれています。SP は、鍵を使用した署名の検証を試みる代わりに、署名検証の拡張を使用します。
このオプションは、署名がクエリーパラメーターで転送され、この情報は署名情報では見つからない REDIRECT バインディングに適用されます。これは、キー ID が常にドキュメント署名に含まれる POST バインディングメッセージとは対照的です。
このオプションは、Red Hat build of Keycloak サーバーとアダプターが IDP および SP を提供する場合に使用されます。このオプションは、Sign Documents がオンの場合にのみ関連します。
12.2.1.4. 署名と暗号化
- サインインドキュメント
- ON に設定すると、Red Hat build of Keycloak はレルム秘密鍵を使用してドキュメントに署名します。
- アサーションへの署名
- アサーションは署名され、SAML XML Auth 応答に組み込まれます。
- Signature Algorithm
-
SAML ドキュメントの署名に使用されるアルゴリズム。
SHA1
ベースのアルゴリズムは非推奨となっており、将来のリリースでは削除される可能性があることに注意してください。*_SHA1
の代わりに、より安全なアルゴリズムを使用することを推奨します。また、*_SHA1
アルゴリズムでは、SAML クライアントが Java 17 以降で実行されている場合、署名の検証が機能しません。 - 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 署名の正規化メソッド。
12.2.1.5. ログイン設定
- Login theme
- ログイン、OTP、許可登録、およびパスワードを忘れたページに使用するテーマ。
- Consent required
有効にすると、ユーザーはクライアントアクセスに同意する必要があります。
ブラウザーログインを実行するクライアント側のクライアントの場合。クライアント側のクライアントでシークレットを安全に保つことができないため、正しいリダイレクト URI を設定してアクセスを制限することが重要です。
- Display client on screen
このスイッチは、Consent Required が Off の場合に適用されます。
Off
同意画面には、設定されたクライアントスコープに対応する同意のみが含まれます。
On
同意画面には、このクライアント自体に関する項目も 1 つあります。
- Client consent screen text
- Consent required と Display client on screen が有効になっている場合に適用されます。このクライアントの権限に関する同意画面に表示されるテキストが含まれます。
12.2.1.6. ログアウト設定
- Front channel logout
- Front Channel Logout が有効になっている場合、アプリケーションのログアウトにはブラウザーのリダイレクトが必要です。たとえば、アプリケーションでは Cookie をリセットする必要がありますが、リダイレクトでのみ実行可能です。Front Channel Logout が無効な場合、Keycloak はバックグラウンドの SAML 要求を呼び出して、アプリケーションからログアウトします。
12.2.2. keys タブ
- Encrypt Assertions
- SAML ドキュメントのアサーションをレルムの秘密鍵で暗号化します。AES アルゴリズムは、128 ビットのキーサイズを使用します。
- Client Signature Required
-
Client Signature Required が有効な場合は、クライアントからのドキュメントは署名されている必要があります。Red Hat build of Keycloak は、
Keys
タブで設定されたクライアント公開鍵または証明書を使用してこの署名を検証します。 - Allow ECP Flow
- true の場合、このアプリケーションは認証に SAML ECP プロファイルを使用できます。
12.2.3. Advanced タブ
このタブには、特定の状況に対応する多くのフィールドがあります。一部のフィールドは、他のトピックで説明します。他のフィールドの詳細は、疑問符アイコンをクリックしてください。
12.2.3.1. Fine Grain SAML Endpoint Configuration
- Logo URL
- クライアントアプリケーションのロゴを参照する URL。
- Policy URL
- プロファイルデータがどのように使用されるかについて読むために、証明書利用者クライアントがエンドユーザーに提供する URL。
- Terms of Service URL
- 依拠当事者の利用規約について読むために、依拠当事者クライアントがエンドユーザーに提供する URL。
- Assertion Consumer Service POST Binding URL
- Assertion Consumer Service の POST バインディング URL。
- Assertion Consumer Service Redirect Binding URL
- Assertion Consumer Service のリダイレクトバインディング URL。
- Logout Service POST Binding URL
- Logout Service の POST バインディング URL。
- Logout Service Redirect Binding URL
- Logout Service のリダイレクトバインディング URL。
- Logout Service Artifact Binding URL
-
Logout Service の Artifact リダイレクトバインディング URL。
Force Artifact Binding
オプションと共に設定すると、Artifact バインディングがログインフローとログアウトフローの両方で強制的に実行されます。このプロパティーが設定されていない限り、Artifact バインディングはログアウトには使用されません。 - Logout Service SOAP Binding URL
- Logout Service のリダイレクトバインディング URL。バックチャネルログアウト が使用されている場合にのみ適用されます。
- Artifact Binding URL
- HTTP アーティファクトメッセージの送信先となる URL。
- Artifact Resolution Service
-
ArtifactResolve
メッセージの送信先となるクライアント SOAP エンドポイントの URL。
12.2.4. IDP でのログイン
IDP Initiated Login は、Red Hat build of Keycloak サーバー上にエンドポイントを設定して、特定のアプリケーション/クライアントにログインできるようにする機能です。クライアントの Settings タブで、IDP Initiated SSO URL Name を指定する必要があります。これは、空白のない単純な文字列です。この後、root/realms/{realm}/protocol/saml/clients/{url-name}
の URL でクライアントを参照できます。
IDP によって開始されるログインの実装では、REDIRECT バインディングよりも POST が優先されます (詳細は、saml バインディング を確認してください)。そのため、最終バインディングおよび SP URL は以下の方法で選択されます。
- 特定の Assertion Consumer Service POST Binding URL が定義される場合 (クライアント設定の Fine Grain SAML Endpoint Configuration 設定)。POST バインディングはその URL で使用されます。
- 一般的な Master SAML Processing URL が指定されている場合には、この一般的な URL ではなく POST バインディングが使用されます。
- 最後に、(Fine Grain SAML Endpoint Configuration 内で) Assertion Consumer Service Redirect Binding URL が設定されている場合は、この URL で REDIRECT バインディングが使用されます。
クライアントに特別なリレー状態が必要な場合は、IDP Initiated SSO Relay State フィールドの 設定 タブで設定することもできます。あるいは、ブラウザーは RelayState クエリーパラメーター、つまり root/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/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 に追加するだけです。
12.2.5. エンティティー記述子を使用したクライアントの作成
SAML 2.0 クライアントを手動で登録するのではなく、標準の SAML Entity Descriptor XML ファイルを使用してクライアントをインポートできます。
クライアントページには、Import client オプションが含まれています。
クライアントの追加
手順
- Browse をクリックします。
- XML エンティティー記述子情報が含まれるファイルを読み込みます。
- 情報を確認し、すべてが正しく設定されていることを確認します。
mod-auth-mellon などの SAML クライアントアダプターの中には、IDP の XML エンティティー記述子が必要です。この記述子は、以下の URL に移動して確認できます。
root/realms/{realm}/protocol/saml/descriptor
realm は、クライアントのレルムに置き換えます。