Keycloak,如果选择更新密码操作,则不返回访问令牌

Posted

技术标签:

【中文标题】Keycloak,如果选择更新密码操作,则不返回访问令牌【英文标题】:Keycloak, not returning access token if update password action selected 【发布时间】:2017-07-20 07:59:48 【问题描述】:

我正在调用/auth/realms/master/protocol/openid-connect/token,通过在正文中发送以下内容来获取访问令牌, grant_type=password&client_id=example-docker-jaxrs-app&username=user&password=password&client_secret=1d27aedd-11c2-4ed2-97d5-c586e1f9b3cd

但是当我从 keycloak 管理控制台向用户输入更新密码作为所需操作时,在尝试通过上述 api 获取令牌时出现以下错误,


    "error": "invalid_grant",
    "error_description": "Account is not fully set up"

还有一件事,2个设置有什么区别,临时密码和更新密码需要操作?

【问题讨论】:

【参考方案1】:

如果您将密码标记为临时密码,则会将用户对update password 的操作标记为必需。

并且在用户更新/设置密码之前,即此操作已完成,您将无法使用此用户获取访问令牌,因为该帐户未“完全设置”并且属于一种完成设置需要操作的中间状态。

【讨论】:

感谢您的回复,那么有人如何第一次验证用户名/密码。我不想使用 keycloak 屏幕我有自己的登录页面,我们正在使用 /token api 来验证用户名/密码。 您可以避免将密码标记为临时密码。不会向用户配置文件添加任何必需的操作,并且凭据可用于获取令牌 @ShaileshNarkhede 你找到解决办法了吗?如果是,您介意与我们分享))吗?提前致谢 如上评论所说,不要将密码标记为临时密码,则不会添加 updateAction 并返回访问令牌。【参考方案2】:

如果您想更新密码,请更新密码,不要将其标记为临时密码,如果您标记为临时密码,然后只需从“必需操作”框中删除更新密码即可。

【讨论】:

谢谢你的解决方案解决了我的问题【参考方案3】:

我在 ldap 用户联合方面也遇到了同样的问题,我查看了一些 SSO 表并从 user_required_action 中删除了数据并清除了用户缓存,它可以工作。

【讨论】:

以上是关于Keycloak,如果选择更新密码操作,则不返回访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何通过执行操作电子邮件通过 keycloak admin rest api 更新密码

keycloak 8 登录更新密码 ftl 文件未加载

Keycloak 账户管理api更新密码不起作用

在 keycloak 主题中更新密码时正在存储“这不是登录表单”

如何从 REST API(PUT 方法)更新 Keycloak 密码?

如果未使用 multer 在 nodejs 中选择文件,则不更新