8.2. リバースプロキシーヘッダーの設定
Red Hat build of Keycloak は、proxy-headers オプションに基づいてリバースプロキシーヘッダーを解析します。このオプションは、次のいくつかの値を受け入れます。
- デフォルトでは、オプションが指定されていない場合、リバースプロキシーヘッダーは解析されません。これは、プロキシーが使用されていない場合、または https パススルーを使用している場合に使用する必要があります。
-
forwardedは、RFC7239 に従ってForwardedヘッダーの解析を有効にします。 -
xforwardedは、X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-Host、X-Forwarded-Portなどの非標準のX-Forwarded-*ヘッダーの解析を有効にします。
https パススルー以外の目的でリバースプロキシーを使用しており、proxy-headers オプションを設定していない場合は、デフォルトでは、オリジンチェックを実行するプロキシー経由の要求に対して 403 Forbidden 応答が表示されます。
以下に例を示します。
bin/kc.[sh|bat] start --proxy-headers forwarded
bin/kc.[sh|bat] start --proxy-headers forwarded
forwarded または xforwarded のいずれかを選択した場合は、リバースプロキシーによって Forwarded または X-Forwarded-* ヘッダーが適切に設定して上書きされることを確認してください。これらのヘッダーを設定するには、リバースプロキシーのドキュメントを参照してください。https パススルーでは forwarded または xforwarded を使用しないでください。設定を誤ると、Red Hat build of Keycloak がセキュリティー上の脆弱性にさらされることになります。
クライアントアドレスが、リバースプロキシーにより Forwarded ヘッダーまたは X-Forwarded-For ヘッダーを介して適切に設定されていることを、特に注意して確認してください。このヘッダーが正しく設定されていない場合、不正なクライアントがこのヘッダーを設定し、クライアントが実際のアドレスとは異なる IP アドレスから接続しているという誤った認識を Red Hat build of Keycloak が持つ可能性があります。IP アドレスの拒否リストまたは許可リストを作成する場合、このような注意はさらに重要です。
xforwarded 設定を使用する場合、X-Forwarded-Port は X-Forwarded-Host に含まれるポートよりも優先されます。
TLS 接続がリバースプロキシー (Edge Termination) で終了する場合は、http-enabled 設定で HTTP を有効にする必要があります。