Api JSON Web令牌实现:访问和刷新令牌

Api JSON Web令牌实现:访问和刷新令牌,api,authentication,jwt,json-web-token,Api,Authentication,Jwt,Json Web Token,我将要实现一个使用JSON Web令牌(JWT)方法的身份验证系统。我在网上看到了多种方法,但它们似乎总是与我正在考虑使用的方法略有不同 我考虑的方法是: 用户登录导致服务器创建刷新令牌和访问令牌。(刷新令牌由id和到期日组成,访问令牌是包含刷新令牌id的有效期为15分钟的JWT) 用户可以使用访问令牌发出多个成功请求,直到其过期 一旦用户使用过期令牌执行请求,服务器将检查过期访问令牌中包含的刷新令牌id是否与当前刷新令牌匹配 如果匹配,请更改刷新令牌id并创建包含新刷新令牌id的新访问令牌

我将要实现一个使用JSON Web令牌(JWT)方法的身份验证系统。我在网上看到了多种方法,但它们似乎总是与我正在考虑使用的方法略有不同

我考虑的方法是:

  • 用户登录导致服务器创建刷新令牌和访问令牌。(刷新令牌由id和到期日组成,访问令牌是包含刷新令牌id的有效期为15分钟的JWT)

  • 用户可以使用访问令牌发出多个成功请求,直到其过期

  • 一旦用户使用过期令牌执行请求,服务器将检查过期访问令牌中包含的刷新令牌id是否与当前刷新令牌匹配

  • 如果匹配,请更改刷新令牌id并创建包含新刷新令牌id的新访问令牌

  • 如果不匹配,请请求验证

我相信这种方法有以下优点:

  • 它不需要客户端直接处理刷新令牌

  • 每15分钟只需执行一次DB或缓存请求,即可检查刷新令牌

  • 它允许应用程序通过从数据库或缓存中删除刷新令牌来终止会话

  • 服务器将只创建一个与刷新令牌匹配的访问令牌。一旦更新访问令牌,再次使用它将不会导致另一个刷新操作


有人能对此发表评论吗?这是一种好方法吗?

刷新令牌的目的是允许应用程序在不重新验证的情况下获得新的访问令牌,从而最小化被盗令牌的影响。如果允许在令牌本身中包含刷新ID的自动续订,则实际上是在延长令牌的生存期,而无需特意要求刷新令牌

拦截JWT的攻击者可以无限期地模拟用户,直到用户执行新的访问且ID不匹配为止


我认为在新的访问令牌过期之前使用刷新令牌更安全

我想你的问题在主题上,所以你建议怎么做?创建两个令牌,向用户提供两个令牌,希望用户始终使用access one,并在过期后要求他提供刷新令牌?您可以提供刷新令牌,并在需要时颁发访问令牌。例如,在用户操作后发出访问令牌,如果该令牌因用户不活动而过期,则需要刷新令牌(或凭据,具体取决于您的需要)查看。您还可以在固定的时间段后颁发访问令牌