Spring Security OAuth 2隐式授权 - 不支持刷新令牌

时间:2013-11-18 09:27:15

标签: oauth spring-security access-token

Spring Security OAuth 2隐式授权不支持刷新令牌。当访问令牌在客户端到期时,如何处理场景?

2 个答案:

答案 0 :(得分:7)

隐式流不会向客户端授予刷新令牌。这意味着当访问令牌过期时,客户端必须再次重定向到授权链接。

当访问令牌过期时,您将在请求受保护资源时收到401 Unauthorized(例如API方法):

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="Some Realm Name", error="invalid_token",error_description="Invalid token: 12f55216-0fe0-422e-a473-356e03a3489b"
Content-Type: application/xhtml+xml;charset=UTF-8

<oauth><error_description>Invalid token: 12f55216-0fe0-422e-a473-356e03a3489b</error_description><error>invalid_token</error></oauth>

您的应用程序必须通过调用

来响应并请求新的访问令牌
/oauth/authorize?response_type=token&client_id=your-client-id

试。

4.2. Implicit Grant

  

“隐式授权类型用于获取访问令牌(它没有   支持刷新令牌的发布)并针对公众进行了优化   已知操作特定重定向URI的客户端。这些客户   通常使用脚本语言在浏览器中实现   作为JavaScript。“

4.2.2 Implicit Grant response

  

“授权服务器不得发出刷新令牌。”

答案 1 :(得分:0)

我知道这个话题已经很老了,但最近我遇到了同样的问题。 在spring boot 2和spring security 5中,当springboot是你的身份验证服务器时,你将调用

/的OAuth /授权RESPONSE_TYPE =令牌安培; CLIENT_ID =您的用户-id 再次,DefaultTokenServices.createAccessToken方法将检查您当前的令牌是否仍然有效。如果是的话,你会收到你的旧的,没有像你期望的那样精神焕发。 建议在请求中使用prompt = none参数来接收刷新ed令牌,但是我注意到spring不支持它。

我通过使用CustomTokenServices覆盖DefaultTokenServices解决了这个问题。我在博客上描述了问题:

https://regulargeek.blogspot.com/2018/05/angular-5-springboot-2-oauth2-and.html

你会在我的github上找到示例应用: https://github.com/aogorek/springboot-oauth2-angular2

我希望它会帮助一些人,因为我找不到更好的解决方案