Keycloak - URL 代理背后的重置密码电子邮件

Keycloak - URL Reset Password email behind a proxy

我们正在使用 Keycloak 2.0。0.Final 在 RedHat 环境中安装在 nginx 代理 后面。

我们目前面临 重置密码 功能的问题,该功能使用内部服务器主机而不是外部服务器主机发送电子邮件在行动中 URL 因为我们在代理后面。

我通过电子邮件收到此邮件:https://internal/auth/realms/MYREALM/login-actions/reset-credentials?code=wYhHP(...) but the end user should see https://external/auth/realms/MYREALM/login-actions/reset-credentials?code=wYhHP(...)。否则整个代理设置工作完美,它基本上是一个 URL 重写功能。

我发现这张票与类似案例有关,但解决方案并不理想:http://lists.jboss.org/pipermail/keycloak-user/2015-October/003428.html

我们可以使用任何隐藏属性、设置或解决此问题的解决方案吗?

谢谢

Nginx 从主机 header 的内容中设置通过电子邮件发送的 URL 前缀,因此您的 nginx 代理需要配置为完整传递主机 header。

像这样:

proxy_pass        <your internal keycloak URL or IP address>
...
proxy_set_header  Host            $host;
proxy_set_header  X-Real-IP       $remote_addr;
proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
... 

如果您的内部 URL 不是 https

,您可能还需要设置 X-forwarded-proto