没腿的鸟 发表于 2024-9-3 14:22:28

keycloak~Refresh_token阶段不走RequiredAction

Refresh_token是在access_token逾期之后,用来换新的access_token的,有了Refresh_token之后,用户可以在很长一段时间不需要重新登录,这对于用户体验是有利益的;RequiredAction是一种登录阶段的必选行为,当一个用户被某个RequiredAction标记之后,用户必须完成RequiredAction,才算完本钱次登录。
Refresh_token阶段是否会查抄RequiredAction

这个答案是否定的,当一个用户登录之后,它在后台被标记一个RequiredAction,对于已经产生的refresh_token是不会有影响的,你拿着refresh_token还是可以直接换新的access_token。
https://img2024.cnblogs.com/blog/118538/202409/118538-20240903151745804-317748746.png
当用户被禁用了,Refresh_token是否会被就叫影响

这个答案是肯定的,当一个用户的enable为false时,用户所产生的refresh_token就无法换回新的token了,这时会有http_status为400的错误返回
{
    "error": "invalid_grant",
    "error_description": "User disabled"
}从keycloak源代码中也是可以看到的,位于org.keycloak.protocol.oidc.endpoints.TokenEndpoint范例的refreshTokenGrant()方法,有判断用户是否有效的方法,在`tokenManager.refreshAccessToken()方法中,如图
https://img2024.cnblogs.com/blog/118538/202409/118538-20240903151516032-409630289.png
从内部方法可以找到判断用户状态的代码,如下
if (!user.isEnabled()) {
throw new OAuthErrorException(OAuthErrorException.INVALID_GRANT, "User disabled", "User disabled");
}如果希望refresh_token阶段对用户的required action有所控制,可以在这里添加对应的逻辑即可。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: keycloak~Refresh_token阶段不走RequiredAction