第7章 ホスト名
Red Hat Single Sign-On では、パブリックのホスト名を使用します。たとえば、トークン発行者フィールドおよび URL で、パスワードリセットメールで送信されます。
Hostname SPI は、要求のホスト名の設定方法を提供します。初期状態のプロバイダーでは、フロントエンドリクエストの固定 URL を設定し、バックエンド要求をリクエスト URI を基にすることを許可します。組み込みプロバイダーが必要な機能を提供しない場合に、独自のプロバイダーを開発することもできます。
7.1. デフォルトのプロバイダー リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのホスト名プロバイダーは、設定された frontendUrl をフロントエンドリクエスト (ユーザーエージェントからの要求) のベース URL として使用し、バックエンドリクエスト (クライアントからの直接リクエスト) のベースとしてリクエスト URL を使用します。
frontend の要求は、Keycloak サーバーと同じ context-path を持つ必要はありません。これは、https://auth.example.org や https://example.org/keycloak などのように Keycloak を公開することができますが、内部的には、URL が https://10.0.0.10:8080/auth になる可能性があります。
これにより、ユーザーエージェント (ブラウザー) がパブリックドメイン名を介して ${project.name} にリクエストを送信できますが、内部クライアントは内部ドメイン名または IP アドレスを使用できます。
これは OpenID Connect Discovery エンドポイントに反映されます。たとえば、authorization_endpoint はフロントエンド URL を使用し、token_endpoint はバックエンド URL を使用します。ここでは、インスタンスのパブリッククライアントはパブリックエンドポイント経由で Keycloak と通信するため、authorization_endpoint と token_endpoint のベースが同じになります。
Keycloak の frontendUrl を設定するには、-Dkeycloak.frontendUrl=https://auth.example.org をスタートアップに渡すか、standalone.xml で設定できます。以下の例を参照してください。
jboss-cli で frontendUrl を更新するには、次のコマンドを使用します。
/subsystem=keycloak-server/spi=hostname/provider=fixed:write-attribute(name=properties.frontendUrl,value="https://auth.example.com")
/subsystem=keycloak-server/spi=hostname/provider=fixed:write-attribute(name=properties.frontendUrl,value="https://auth.example.com")
すべてのリクエストがパブリックドメイン名を通過する必要がある場合は、forceBackendUrlToFrontendUrl を true に設定すると、バックエンドリクエストもフロントエンド URL を強制的に使用させることができます。
個々のレルムのデフォルトのフロントエンド URL を上書きすることもできます。これは管理コンソールで実行できます。
管理エンドポイントおよびコンソールをパブリックドメインに公開しない場合は、adminUrl プロパティーを使用して管理コンソールの固定 URL を設定します。これは frontendUrl とは異なります。/auth/admin へのアクセスを外部でブロックする必要もあります。詳細は、サーバー管理ガイド を参照してください。