【问题标题】: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 进行编码的解决方案。

标签: spring spring-security oauth-2.0 access-token


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    最后我跟着这个 link

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

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 2018-05-21
      • 2016-08-06
      • 1970-01-01
      • 2016-11-15
      • 2012-05-16
      • 2014-11-20
      • 2023-03-31
      • 2014-03-29
      相关资源
      最近更新 更多