keycloak~Refresh_token阶段不走RequiredAction
  2xk0JyO908yA 10天前 32 0

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

Refresh_token阶段是否会检查RequiredAction

这个答案是否定的,当一个用户登录之后,它在后台被标记一个RequiredAction,对于已经产生的refresh_token是不会有影响的,你拿着refresh_token还是可以直接换新的access_token。

当用户被禁用了,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()方法中,如图

从内部方法可以找到判断用户状态的代码,如下

if (!user.isEnabled()) {
  throw new OAuthErrorException(OAuthErrorException.INVALID_GRANT, "User disabled", "User disabled");
}

如果希望refresh_token阶段对用户的required action有所控制,可以在这里添加对应的逻辑即可。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 10天前 0

暂无评论

推荐阅读
  FHUfYd9S4EP5   8小时前   9   0   0 Java
  sSh3rBaiME5f   2天前   16   0   0 Java
  FHUfYd9S4EP5   8小时前   9   0   0 Java
  qCe06rFCa8NK   8小时前   6   0   0 Java
  ZTo294hNoDcA   8小时前   8   0   0 Java
  FHUfYd9S4EP5   8小时前   8   0   0 Java
  QGiRIwDaZAe8   2天前   15   0   0 Java
2xk0JyO908yA