我有一个小问题。
目前我的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以强制重新登录?
答案 0 :(得分:5)
access_token的生命周期独立于授予客户端访问权限的用户的登录会话。 OAuth2没有用户登录或注销或会话的概念,因此您希望注销撤销令牌这一事实似乎表明您误解了OAuth2的工作原理。你应该在你的问题中澄清为什么你希望事情以这种方式运作以及为什么你需要OAuth。
如果您真的想要这种行为,那么您必须自己编写代码(例如,在自定义的Spring Security LogoutHandler
中),但令牌的生命周期通常由其到期时间决定。令牌撤销通常是提供给用户的单独界面,允许他们过早地撤销对一个或多个客户的资源访问 - 比如Twitter的third-party applications access。
答案 1 :(得分:0)
最后我跟着这个 link
在LogoutHandlerFilter中,我调用了TokenService.revokeToken()方法。