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

Keycloak, not returning access token if update password action selected

我正在调用 /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 个设置有什么区别,临时密码和更新密码需要操作?

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

并且在用户 updated/set 输入密码之前,即此操作已完成,您将无法使用此用户获取访问令牌,因为该帐户不是 "fully setup"并且处于一种中间状态,需要执行操作才能完成设置。

我在 ldap 用户联合方面遇到了同样的问题,我检查了 SSO 的一些表并从 user_required_action 中删除了数据并清除了用户缓存,并且有效。

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