如何使用JWT刷新令牌?

问题描述 投票:0回答:1

我想为我的REST API实现JWT身份验证。

假设这种情况,

  1. 用户访问/登录路径,服务器生成访问令牌和刷新令牌,并将它们发送给客户端。我在哪里存储访问令牌和刷新令牌?是否还将刷新令牌和特定的用户ID一起存储在数据库中?
  2. 访问令牌已到期。如何刷新它,而不必使用户再次使用凭据登录?

客户端是否需要了解刷新令牌?当服务器尝试使用过期的访问令牌访问路由时,服务器可以验证它并使用与数据库中与userID关联的刷新令牌,并为客户端生成一个新的访问令牌。

jwt jwt-auth
1个回答
0
投票
  1. 用于访问令牌的最佳位置IMO在内存中。本机应用程序的刷新令牌应安全地存储在设备上。注意:您不应该在Web客户端/浏览器中存储刷新令牌。假设您使用的是OAuth / OIDC流,则本机应用可以通过在对offline_access端点的请求所指定的作用域列表中指定/token来接收刷新令牌。
  2. 对于已收到刷新令牌的本机应用,您可以检测到对保护路由的请求的401响应,随后尝试从刷新令牌(安全存储在设备上)中获取新的访问令牌。要使用刷新令牌获取新的访问令牌,可以向/token端点发出请求,例如指定grant_type=refresh_tokenrefresh_token=XYZ。请参阅下面的示例请求:
  3. curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=refresh_token&client_id=4d7481b6-9de3-4e20-9fc1-f907cda9d993&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&refresh_token=QWERTY123&scope=openid%20offline_access" https://idp.example.com/token
    
© www.soinside.com 2019 - 2024. All rights reserved.