注销后删除访问令牌

Posted

技术标签:

【中文标题】注销后删除访问令牌【英文标题】:Delete access_token after logout 【发布时间】:2014-04-28 17:15:32 【问题描述】:

我有一个小问题。

目前我的 Spring 配置使用 DefaultTokenServices(由 spring-security-oauth2-2.0.0.M3.jar 提供)。 它会正确生成 access_token。

现在我要做的是在我注销时取消/删除/删除/撤销此令牌。

在 security.xml 中,我在 http 标签中配置了注销:

<sec:logout logout-url="/logout" logout-success-url="/auth" invalidate-session="true" delete-cookies="true" />

重定向成功。但是,如果我编写了一个登录、注销的测试,并且在我尝试使用此 access_token 访问受限路径之后,我可以获得成功的请求,但我预计会出现未授权错误。 为什么?

如何配置注销access_token自动删除强制重新登录?

【问题讨论】:

感谢卢克·泰勒。我们使用 oaut2 访问令牌来识别用户,因此我们不需要每次都传递用户凭据(用户名和密码)。因此,我们可以识别持有令牌的用户,直到注销或令牌时间到期。我将尝试对 LogoutHandler 进行编码的解决方案。 【参考方案1】:

access_token 的生命周期与授予客户端访问权限的用户的登录会话无关。 OAuth2 没有用户登录或注销或会话的概念,因此您希望注销会撤销令牌这一事实似乎表明您误解了 OAuth2 的工作原理。您可能应该在您的问题中澄清为什么您希望事情以这种方式工作以及为什么需要 OAuth。

如果您真的想要这种行为,那么您必须自己编写代码(例如,在自定义 Spring Security LogoutHandler 中),但令牌的生命周期通常由其到期时间决定。令牌撤销通常是提供给用户的单独界面,允许他们过早撤销一个或多个客户端对其资源的访问 - 类似于 Twitter 的 third-party applications access。

【讨论】:

【参考方案2】:

最后我跟着这个 link

在 LogoutHandlerFilter 中我调用了 TokenService.revokeToken() 方法。

【讨论】:

以上是关于注销后删除访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

在反应应用程序中访问令牌过期后自动注销

Identity Server 4 - 如何解决客户端注销后访问令牌仍然有效?

我们可以在 MFP 上注销后使旧的访问令牌失效吗?

令牌持有者身份验证 - 不活动时间后注销

当 jwt 刷新令牌未过期时,React Native 应用程序注销

使用 JWT 令牌使用 AdonisJS 注销