首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >验证刷新令牌和发出新的承载令牌的工作流是什么?

验证刷新令牌和发出新的承载令牌的工作流是什么?
EN

Stack Overflow用户
提问于 2018-05-26 22:10:41
回答 1查看 4.8K关注 0票数 5

这不是一个编码问题,而是用于正确处理和处理刷新令牌的概念问题。

我有一个页面应用程序,它在登录时发出一个jwt令牌。这个记号很好用。现在,我希望将过期设置为低值,并使用刷新令牌刷新承载令牌。

问题是,哪些声明应该存储在刷新令牌中?在发出新令牌之前,应该执行哪些步骤来验证刷新令牌?

例如,现在我的刷新令牌是一个jwt,它存储过期,因此客户端知道刷新令牌何时过期,以及用户名声明,以便我知道与刷新令牌相关联的用户。

因此,当接收到刷新令牌时:

  1. 检查它是否过期。
  2. 检查它是否已被撤销。
  3. 使用刷新令牌中的UserName发出一个新的短期承载令牌。

这是正确的工作流吗?我只想确保我没有漏掉任何安检。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-27 01:19:19

如果您的应用程序是单个页面应用程序,则不应该使用长期存在的刷新令牌,因为您无法安全地存储它们。

OAuth2为不同类型的客户端(我在这里已经描述过)定义了许多授权流。刷新令牌只适用于机密客户端(如生活在安全服务器上的web应用程序)。

刷新令牌与访问令牌一样容易被窃取,因为这两个令牌都是存储在客户端上的承载令牌。

一些OAuth库允许SPA或其他非机密客户端通过使用cookie中的会话令牌与授权服务器的令牌端点对话来获取新的访问令牌。只要cookie有效,用户就可以获得新的访问令牌。之后,用户将需要重新进行身份验证。当然,cookie可以标记为“安全”和“http”,这使得它们更难被窃取。

如果您从使用访问令牌的同一个服务端点发出JWT令牌,则可以让客户端在令牌请求中包含一个nonce,然后将其作为声明包含在令牌中。客户端可以在授权头中发送JWT,在自定义标头中发送nonce。您的令牌验证将再次对hash进行散列并将其与JWT中的声明进行比较。那样的话,如果你的令牌被偷了,如果没有现在的价值,就更难使用了。当然,在有针对性的攻击中,你的现在也可能被偷。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50547403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档