我们正在RedHat环境中的 nginx代理后面安装 Keycloak 2.0.0.Final 。
我们目前面临着 重置密码 功能的问题,该功能会在操作网址中发送包含内部服务器主机而非外部服务器主机的电子邮件,因为我们落后了代理人。
我通过电子邮件收到此邮件:https://internal/auth/realms/MYREALM/login-actions/reset-credentials?code=wYhHP(...)但最终用户应该看到https://external/auth/realms/MYREALM/login-actions/reset-credentials?code=wYhHP(...)。整个代理设置工作正常,否则它基本上是一个URL重写功能。
我发现这张票与一个类似的案例有关,但解决方案并不理想:http://lists.jboss.org/pipermail/keycloak-user/2015-October/003428.html
我们可以使用哪些隐藏属性,设置或解决此问题的解决方案?
由于
答案 0 :(得分:1)
Nginx根据Host标头的内容设置电子邮件URL前缀,因此需要配置nginx代理以完整地传递Host标头。
这样的事情:
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;
...
如果您的内部网址不是https
,您可能还需要设置X-forwarded-proto