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

时间:2016-08-11 13:21:41

标签: api authentication jwt json-web-token

我即将实现使用JSON Web令牌(JWT)方法的身份验证系统。我在网上阅读了多种方法,但它们似乎总是与我想要使用的方法略有不同。

我想到的方法是:

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

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

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

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

  • 如果不匹配,请询问身份验证

我认为这种方法具有以下优点:

  • 它并不要求客户直接处理刷新令牌

  • 数据库或缓存请求每15分钟只需执行一次,以检查刷新令牌

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

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

有人可以对此发表评论吗?这是一个好方法吗?

1 个答案:

答案 0 :(得分:1)

刷新令牌的目的是允许应用程序获取新的访问令牌,而无需重新进行身份验证,从而最大限度地减少被盗令牌的影响。如果您允许在令牌本身中自动续订(包括刷新ID),则实际上延长了令牌的生命周期而无需刻意要求刷新令牌

窃取JWT的攻击者可以无限期地冒充用户,直到用户执行新访问且ID不匹配为止。

我认为在使用特定刷新令牌

之前获取新访问令牌更安全