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

Posted

技术标签:

【中文标题】Keycloak - 代理后的 URL 重置密码电子邮件【英文标题】:Keycloak - URL Reset Password email behind a proxy 【发布时间】:2017-08-21 23:16:39 【问题描述】:

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

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

我通过电子邮件收到: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

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

谢谢

【问题讨论】:

【参考方案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;
... 

如果您的内部 URL 不是 https,您可能还需要设置 X-forwarded-proto

【讨论】:

以上是关于Keycloak - 代理后的 URL 重置密码电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Keycloak - 密码重置后自动登录

Keycloak:实现“重置密码”(作为管理员)流程与“忘记密码”(作为用户)相同

用于用户注册、密码重置、忘记密码等的 Keycloak 端点

如何使用 REST API 在 keycloak 中重置用户密码

使用 Keycloak Java API 重置用户密码

Keycloak - 重置密码时未显示用户未找到的消息信息