7.5. リバースプロキシーの使用
プロキシーが http または再暗号化された TLS 要求を転送する場合は、proxy-headers
オプションを設定する必要があります。ホスト名の設定に応じて、URL の一部またはすべてが動的に決定される場合があります。
forwarded
または xforwarded
のいずれかを選択した場合は、リバースプロキシーによって Forwarded
または X-Forwarded-*
ヘッダーが適切に設定して上書きされることを確認してください。これらのヘッダーを設定するには、リバースプロキシーのドキュメントを参照してください。設定を誤ると、Red Hat build of Keycloak がセキュリティー上の脆弱性にさらされることになります。
7.5.1. 完全に動的な URL。
たとえば、リバースプロキシーが Forwarded ヘッダーを正しく設定し、ホスト名をハードコードしたくない場合は、Red Hat build of Keycloak でこれに対応できます。次のようにサーバーを単に起動する必要があります。
bin/kc.[sh|bat] start --hostname-strict false --proxy-headers forwarded
この設定では、サーバーは Forwarded ヘッダーによって設定された値を考慮します。これは、すべてのエンドポイントが動的に解決されることも意味します。
7.5.2. 部分的に動的な URL
hostname
オプションが完全な URL として指定されていない場合、proxy-headers
オプションを使用して URL を部分的に動的に解決することもできます。以下に例を示します。
bin/kc.[sh|bat] start --hostname my.keycloak.org --proxy-headers xforwarded
この場合、スキームおよびポートは X-Forwarded-* ヘッダーから動的に解決されますが、ホスト名は my.keycloak.org
として静的に定義されます。
7.5.3. 固定 URL
proxy-headers
は、ヘッダーがリクエストの発信元を判断するために使用されるため、hostname
を完全な URL に設定しても引き続き有効です。以下に例を示します。
bin/kc.[sh|bat] start --hostname https://my.keycloak.org --proxy-headers xforwarded
この場合、X-Forwarded-* ヘッダーからは何も動的に解決されませんが、X-Forwarded-* ヘッダーはリクエストの正しい送信元を判別するために使用されます。