第 8 章 使用反向代理
分布式环境通常需要使用反向代理。红帽构建的 Keycloak 提供多个选项来安全地与此类环境集成。
8.1. 配置反向代理标头
红帽构建的 Keycloak 将根据 proxy-headers
选项解析反向代理标头,该选项接受几个值:
- 默认情况下,如果没有指定 选项,则不会解析反向代理标头。
-
转发
启用根据 RFC7239 解析Forwarded
标头。 -
X
forwarded
启用解析非标准X-Forwarded输入
标头,如X-Forwarded-For
、X-Forwarded-Proto
、X-Forwarded-Host
和X-Forwarded-Port
。
如果您在 https passthrough 之外使用反向代理且没有设置 proxy-headers
选项,则默认情况下,您将看到通过执行原始检查的代理对请求的 403 Forbidden 响应。
例如:
bin/kc.[sh|bat] start --proxy-headers forwarded
如果选择了 转发
或 xforwarded
,请确保您的反向代理正确设置并分别覆盖 Forwarded
或 X-Forwarded EgressIP
标头。要设置这些标头,请查阅您的反向代理文档。错误配置会使红帽构建 Keycloak 暴露于安全漏洞。
采取额外的预防措施,确保客户端地址由您的反向代理通过 Forwarded
或 X-Forwarded-For
标头正确设置。如果正确配置了此标头,则恶意客户端可以设置此标头并欺骗红帽构建的 Keycloak,以认为客户端从与实际地址不同的 IP 地址连接。如果您执行任何拒绝或允许 IP 地址列表,则此预防措施可能更为重要。
使用 xforwarded
设置时,X-Forwarded-Port
优先于 X-Forwarded-Host
中包含的任何端口。
如果在反向代理(边缘终止)终止 TLS 连接,则需要通过 'http-enabled' 设置启用 HTTP。