如何从自有网站获取Keycloak重置密码的session_code与tab_id
解决Keycloak自定义密码重置页获取session_code和tab_id的问题
核心思路
你邮件里的重置链接带的密钥(一般是key参数)不能直接解码,得通过Keycloak的官方端点去换取需要的session参数。具体步骤如下:
第一步:提取邮件链接中的重置密钥
你的自定义重置链接应该是类似https://your-site.com/reset-password?key=abc123xyz的格式,先从请求里拿到这个key值。第二步:服务器端调用Keycloak的重置凭证端点
在你的后端服务里,用这个key发起GET请求到Keycloak的重置凭证接口:# Keycloak 17+版本路径 GET https://your-keycloak-domain/realms/{你的Realm名}/login-actions/reset-credentials?key={提取到的key}&client_id={你的应用客户端ID}&redirect_uri=https://your-site.com/reset-password(老版本Keycloak路径要加
/auth前缀:/auth/realms/{realm}/...)第三步:从响应中提取目标参数
这个请求会返回一个3xx重定向响应,响应头里的Location字段会包含你需要的所有参数,比如:https://your-site.com/reset-password?session_code=xxxx&execution=UPDATE_PASSWORD&client_id=xxxx&tab_id=xxxx直接解析这个
Location里的session_code和tab_id即可。
关键注意事项
- 这个请求必须在服务器端发起,不能放在前端JS里,避免重置密钥泄露。
- 确保Keycloak客户端配置的
Valid Redirect URIs包含你的自定义重置页地址,否则Keycloak会拒绝请求。 - 如果你用的是最新版Keycloak,记得去掉路径里的
/auth前缀,这是新版本的路由变化。
内容的提问来源于stack exchange,提问作者Sineth Lakshitha
相关产品推荐
相关产品推荐

