Rest 我应该刷新API上的访问令牌吗

Rest 我应该刷新API上的访问令牌吗,rest,api,authentication,Rest,Api,Authentication,在这种情况下,特定授权用户会更改其密码或电子邮件。由于电子邮件或密码是用户身份验证的一部分,我认为有必要撤销所有身份验证令牌 如果用户更改了密码或电子邮件,刷新身份验证令牌的最佳做法是什么 我不使用OAuth,但在头中有通常的承载令牌。 我们的想法是在客户端存储一个额外的刷新令牌,每当邮件或密码更改时,我们都会撤销他的访问令牌。在该用户可以使用刷新令牌请求获取新的访问令牌后,根据您的后端(Ruby on Rails、NodeJS等),将有不同的方法。(警告:该帖子中使用了一些色彩鲜艳的语言)它克

在这种情况下,特定授权用户会更改其密码或电子邮件。由于电子邮件或密码是用户身份验证的一部分,我认为有必要撤销所有身份验证令牌

如果用户更改了密码或电子邮件,刷新身份验证令牌的最佳做法是什么

我不使用OAuth,但在头中有通常的承载令牌。 我们的想法是在客户端存储一个额外的刷新令牌,每当邮件或密码更改时,我们都会撤销他的访问令牌。在该用户可以使用刷新令牌请求获取新的访问令牌后,根据您的后端(Ruby on Rails、NodeJS等),将有不同的方法。(警告:该帖子中使用了一些色彩鲜艳的语言)它克服了一些身份验证陷阱,特别是重置密码

老实说,你确定你需要一个刷新令牌吗

为什么不简单地使用更新的凭证向当前活动会话(发出电子邮件/密码更改请求的会话)发出新的承载令牌呢

案例1:用户的认证会话

用户具有活动会话,并从其中一个会话更新其密码或电子邮件

  • 使我们不用于更新密码/电子邮件的会话无效
  • 没有理由假设该帐户已被黑客入侵(他们已登录, 假设您的身份验证令牌也在合理的时间范围内过期)
  • 使用更新的凭证(密码/电子邮件)发布新的承载令牌
  • 最佳实践:向帐户发送电子邮件 确认密码更改
案例2:忘记密码

用户已注销并请求更改密码(不是您特别要求的,而是为什么即使使用特殊会话也不需要刷新令牌):

  • 发送重置链接
  • 用户单击该链接,这将创建一个特殊会话,用户将在其中登录 并且可以更新他们的密码
  • 用户更新其密码,使所有其他会话(如果有)无效,发出 基于更新的凭据为当前会话添加新的有效身份验证令牌
  • 最佳实践:在采取任何其他行动之前,强制他们更新密码
希望这能回答你的问题