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 主题中更新密码时正在存储“这不是登录表单”