使用JWT进行身份验证的最佳实践

时间:2020-03-02 14:56:58

标签: authentication jwt

我已经阅读了很多有关JWT(JSON Web令牌)用于身份验证的文章,并感到非常困惑,因为每个人对于使用它们的安全方式都有不同的看法。说安全是指处理注销和密码更改。另外,哪些数据不应保存在JWT有效负载中。

我的问题-使用JWT进行身份验证时,是否有任何行业标准?如果不是,是否可以安全地将密码哈希和注销日期保存在JWT中以处理注销和密码更改,如果没有,还有什么替代方法?

1 个答案:

答案 0 :(得分:0)

使用JWT进行身份验证时是否有任何行业标准,如果可以,它们是什么?

首先,访问令牌(作为任何类型的敏感信息)必须仅通过安全连接发送。

据我了解,您希望能够在发生某种事件时撤销令牌。在这种情况下,您应该考虑在服务器中的某个位置跟踪令牌。

要实现此目的,您可以为每个令牌分配一个唯一的标识符,然后将该标识符存储在服务器中。验证令牌时,除了检查签名和有效期外,还必须检查令牌标识符是否列入白名单。

而且,要为每个令牌分配唯一的标识符,可以使用jti声明:

4.1.7. "jti" (JWT ID) Claim

jti(JWT ID)声明为JWT提供了唯一的标识符。标识符值的分配方式必须确保将相同值偶然分配给不同数据对象的可能性极小;如果应用程序使用多个发行者,则还必须防止不同发行者产生的值之间发生冲突。 jti声明可用于防止重播JWT。 jti值是区分大小写的字符串。使用此声明是可选的。


如果不是,那么将密码哈希和注销日期保存在JWT中以处理注销和密码更改是否安全?

如果您的JWT是JWS,则不应在有效负载中放置任何被认为敏感的信息。