第7章 パブリックホスト名の使用
Red Hat Single Sign-On では、パブリックのホスト名を使用します。たとえば、トークンの issuer フィールドおよびパスワードリセットメールで送信される 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
になる可能性があります。
これにより、ユーザーエージェント (ブラウザー) がパブリックドメイン名を介して Red Hat Single Sign-On にリクエストを送信できますが、内部クライアントは内部ドメイン名または 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
で設定できます。以下の例を参照してください。
<spi name="hostname"> <default-provider>default</default-provider> <provider name="default" enabled="true"> <properties> <property name="frontendUrl" value="https://auth.example.com"/> <property name="forceBackendUrlToFrontendUrl" value="false"/> </properties> </provider> </spi>
jboss-cli で frontendUrl
を更新するには、次のコマンドを使用します。
/subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=properties.frontendUrl,value="https://auth.example.com")
すべてのリクエストがパブリックドメイン名を通過する必要がある場合は、forceBackendUrlToFrontendUrl
を true
に設定すると、バックエンドリクエストもフロントエンド URL を強制的に使用させることができます。
個々のレルムのデフォルトのフロントエンド URL を上書きすることもできます。これは管理コンソールで実行できます。
管理エンドポイントおよびコンソールをパブリックドメインに公開しない場合は、adminUrl
プロパティーを使用して管理コンソールの固定 URL を設定します。これは frontendUrl
とは異なります。/auth/admin
へのアクセスを外部でブロックする必要もあります。詳細は、サーバー管理ガイド を参照してください。