【问题标题】:Should I explicitly send the Refresh Token to get a new Access Token - JWT我是否应该明确发送刷新令牌以获取新的访问令牌 - JWT
【发布时间】:2017-12-12 02:24:21
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: spring-boot spring-security jwt access-token refresh-token


    【解决方案1】:

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

    当您第一次请求访问令牌时,您通常首先向令牌端点发送令牌请求,例如所谓的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/

    下面的教程也是postman中如何使用刷新令牌的截图: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 程序员。

    【讨论】:

    • 你能告诉我应该如何使用邮递员之类的工具发送刷新令牌吗?是否取决于服务器的实现方式?
    • 我在答案中添加了更多信息,尤其是。一个教程链接,该教程还说明了 postman 中刷新令牌的处理
    • 嗨@jps,我仍在四处寻找确切的答案并尝试。我认为该实现实际上不支持 OAuth。我看不到在我的实现中的任何地方都使用了授权类型。我仍在尝试,并将让您知道程序。一些春季安全问题有待清除
    猜你喜欢
    • 2019-03-19
    • 1970-01-01
    • 2019-09-19
    • 2021-08-23
    • 2022-12-18
    • 2021-10-03
    • 2020-10-15
    • 2021-12-14
    相关资源
    最近更新 更多