我是否应该刷新API上的访问令牌

时间:2018-11-16 13:12:49

标签: rest api authentication

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

在用户更改密码或电子邮件的情况下,刷新身份验证令牌的最佳做法是什么?

我不使用OAuth,但标头中具有通常的 Bearer令牌。 这个想法是在客户端存储一个额外的刷新令牌,每次邮件或密码更改时,我们都会撤消他的访问令牌。此用户可以使用刷新令牌发出请求以获取新的访问令牌之后

1 个答案:

答案 0 :(得分:0)

根据您的后端(Ruby on Rails,NodeJS等),将有不同的方法。 This is an excellent blog post(警告:该帖子中使用的多种语言)可以克服某些身份验证陷阱,尤其是重置密码。

说实话,您确定要完全有刷新令牌吗?

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

情况1:用户的身份验证会话

用户具有有效的会话,并通过其中一个会话更新其密码或电子邮件

  • 使我们不用于更新密码/电子邮件的会话无效
  • 没有理由假设该帐户已被黑客入侵(他们已经登录, 假设您还在合理的时间内使身份验证令牌失效)
  • 使用更新的凭据(密码/电子邮件)发布新的Bearer令牌
  • 最佳做法:向该帐户发送电子邮件 确认密码更改

案例2:忘记密码

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

  • 发送重置链接
  • 用户单击该链接,这将在他们登录时创建一个特殊会话 并可以更新其密码
  • 用户更新其密码,使所有其他会话(如果有)无效,并发出 基于更新的凭证的当前会话的新有效身份验证令牌
  • 最佳做法:强迫他们在执行任何其他操作之前先更新密码

希望这能回答您的问题!