我正在努力了解refresh tokens
以及它们如何与JWT
配合使用,因此我可以在没有auth0
API服务的情况下使用它。
谢谢!
更新
如@Florent Morselli所建议。这篇文章的基本问题是错误和令人困惑的。由于JWT和刷新令牌并不是真正可以关联的概念。一个更好的问题可以是:
我没有更改标题中的问题,因为有人可能会错误地寻找同一件事,这将导致他们进入这篇文章。
答案 0 :(得分:2)
令牌可以有两种类型:
对于第一种类型,令牌是不透明的字符串(通常是随机字符串),它们是存储与令牌关联的值的数据库索引。
对于第二种类型,标记包含值。为避免更改,它们经过数字签名或哈希处理。由于它们还可能包含敏感数据,因此可以对其进行加密。
JSON Web令牌是一套规范(主要是RFC7515至RFC7520),为第二种类型引入了新格式。
为什么由oauth0发出的刷新令牌属于第一类而不是JWT(第二类)?
按值表示令牌的主要好处是它们可以是无状态的,即您不需要任何类型的数据库。 当令牌多次发送到服务器时,这非常有用,因为它们可以大大减少数据库调用,从而减少响应时间。
缺点是您无法撤消它们。或者,如果添加撤消系统,则必须管理和调用数据库。 因此,按值分配的令牌应具有非常有限的生存期,与刷新令牌不兼容。
答案 1 :(得分:0)
刷新令牌用于代码流或混合流中,请参见下图
参考:https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowSteps
为什么刷新令牌格式与JWT不同?
参考:https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowSteps
刷新令牌仅仅是存储在数据库中的简单令牌吗?
刷新令牌将由您的IDP(身份提供者动态生成)。
如何使用刷新令牌获取JWT令牌?
拥有上一步中所示的刷新令牌后,您可以使用刷新令牌向令牌端点请求以获取访问令牌 >
访问令牌