You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak 16:客户端应用用户更新邮箱与密码方案咨询

针对Keycloak 16用户信息更新需求的解决方案

一、现成的账户管理主题定制方案

Keycloak自带的账户管理控制台可直接定制,适配你的客户端登录主题,操作步骤如下:

  • 复制Keycloak默认account主题到服务器的keycloak/themes/目录,重命名为自定义主题(比如custom-account)
  • 修改主题内的theme.properties,设置parent=keycloak继承基础样式,然后替换profile.ftl、password.ftl等模板文件的样式、布局,和你的客户端登录主题保持视觉一致
  • 在Keycloak后台对应Realm的「主题」配置中,将「账户主题」设置为你定制的custom-account
  • 客户端应用直接重定向到{Keycloak地址}/realms/{你的Realm名}/account,用户登录后即可进入定制页面修改邮箱和密码

如果你的客户端登录主题已有成熟样式,可直接在账户主题的CSS中引用客户端主题的样式文件,减少重复开发。

二、非管理员REST API实现方式

Keycloak 12+移除旧账户API后,可通过以下方式用非管理员权限实现用户自主更新:

1. 前置权限配置

在Keycloak后台进入你的客户端:

  • 开启「服务账户启用」,并在「客户端角色」中为客户端添加manage-account和manage-account-links角色(这两个角色允许用户修改自身信息)
  • 根据客户端类型设置「访问类型」(confidential或public),并开启「直接访问授权」

2. 更新邮箱

  • 先调用UserInfo端点获取用户ID:
    GET /realms/{你的Realm名}/protocol/openid-connect/userinfo
    Headers: Authorization: Bearer {用户登录后的access_token}
    
    响应中的sub字段即为用户ID
  • 调用管理API更新邮箱:
    PUT /admin/realms/{你的Realm名}/users/{用户ID}
    Headers: Authorization: Bearer {用户的access_token}
    Body:
    {
      "email": "new-user@example.com",
      "emailVerified": false
    }
    

3. 更新密码

推荐两种实现方式:

方式一:调用重置密码接口

PUT /admin/realms/{你的Realm名}/users/{用户ID}/reset-password
Headers: Authorization: Bearer {用户的access_token}
Body:
{
  "type": "password",
  "value": "new-password-123",
  "temporary": false
}

方式二:使用新Account API(更简便)

无需用户ID,直接用用户的access_token调用:

POST /realms/{你的Realm名}/account/password
Headers: Authorization: Bearer {用户的access_token}
Body:
{
  "currentPassword": "old-password",
  "newPassword": "new-password-123",
  "confirmPassword": "new-password-123"
}

内容的提问来源于stack exchange,提问作者harish km

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:32:43