JWT刷新令牌流

我正在构建一个移动应用程序,并使用JWT进行身份验证 .

看起来最好的方法是将JWT访问令牌与刷新令牌配对,以便我可以根据需要随时使访问令牌过期 .

  • 刷新令牌是什么样的?它是随机字符串吗?该字符串是否已加密?这是另一个JWT吗?

  • 刷新令牌将存储在用户模型的数据库中以供访问,对吗?在这种情况下,它似乎应该加密

  • 我会在用户登录后发回刷新令牌,然后让客户端访问一个单独的路径来检索访问令牌吗?

回答(2)

3 years ago

假设这是关于OAuth 2.0,因为它是关于JWT和刷新令牌......:

  • 就像访问令牌一样,原则上刷新令牌可以包括你描述的所有选项;当授权服务器想要无状态或者想要向呈现它的客户端强制执行某种“拥有证明”语义时,可以使用JWT;请注意,刷新令牌与访问令牌的不同之处在于它不会呈现给资源服务器,而只会呈现给首先发布它的授权服务器,因此JWTs作为访问令牌的自包含验证优化确实如此 . 不适用于刷新令牌

  • 取决于数据库的安全性/访问权限;如果数据库可以被其他方/服务器/应用程序/用户访问,那么是(但您的里程可能因存储加密密钥的位置和方式而异)

  • 授权服务器可以同时发出访问令牌和刷新令牌,具体取决于客户端获取它们的授权;规范包含每个标准化拨款的详细信息和选项

3 years ago

基于此implementation with Node.js of JWT with refresh token

1)在这种情况下,他们使用uid,而不是JWT . 当他们刷新令牌时,他们会发送刷新令牌和用户 . 如果将其实现为JWT,则无需发送用户,因为它将在JWT内部 .

2)他们在一个单独的文件(表格)中实现这一点 . 这对我来说很有意义,因为用户可以登录不同的客户端应用程序,并且可以通过应用程序获得刷新令牌 . 如果用户丢失了安装了一个应用程序的设备,则该设备的刷新令牌可能会失效,而不会影响其他已登录的设备 .

3)在此实现中,它使用访问令牌和刷新令牌响应登录方法 . 它对我来说是正确的 .