18

在我的应用程序中,当用户成功登录时,我会返回一个访问令牌和一个刷新令牌。访问令牌和刷新令牌的过期时间分别设置为 10 分钟和 40 分钟。(我应该对这些值做更多的研究。这只是为了测试)

我使用了以下文章中描述的实现

http://www.svlada.com/jwt-token-authentication-with-spring-boot/

假设我在登录 10 分钟后向服务器调用请求。由于访问令牌已过期,我收到 401 错误响应。

但是,作为初学者,我很难理解是否需要显式发送刷新令牌才能获得新的访问令牌。如果我应该这样做,该怎么做?我应该以什么形式发送刷新令牌?标题?

或者,当我的请求由于访问令牌过期而被服务器拒绝时,刷新令牌本身是否应该自动向服务器发送请求以获取新的访问令牌?

我发现很难从我在网上找到的资源中理解刷新令牌行为的性质。请就这些问题向我澄清。

4

1 回答 1

16

是的,刷新令牌用于获取新的访问令牌。

当您第一次请求访问令牌时,您通常首先向令牌端点发送令牌请求,以防Resource Owner Password Credentials Grant在请求标头中使用用户凭据,例如

grant_type=password&username=user1&passowrd=very_secret

当访问令牌过期时,您必须请求新的访问令牌。这一次,使用仍然有效的刷新令牌,您不再需要用户凭据,而是发送

grant_type=refresh_token&refresh_token=<your refresh token>

反而。这样您就不需要在客户端存储用户凭据,也不需要再次通过登录过程打扰用户。正如您知道到期时间一样,您还可以实现一种机制来在 access_token 到期之前刷新您的令牌。

此外,您可以阅读此内容以获取有关该主题的更多信息:https ://auth0.com/learn/refresh-tokens/

在下面的教程中也是如何在邮递员中使用刷新令牌的截图:http: //bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web -api-2-owin/(向下滚动到第 6 步)通常我可以推荐阅读 Taiseer Joudeh 的教程,尤其是。适用于 C#、ASP.NET 和 Angular 程序员。

于 2017-07-07T18:55:21.250 回答