在SecurityAlgorithms类中有两个类似的选项。应该使用哪一个来签名JWT令牌?有什么不同吗?
发布于 2022-11-27 09:38:39
区别在于令牌的标头,特别是alg属性。当您使用HmacSha512时,标题如下所示:
{
"alg": "HS512",
"typ": "JWT"
}但是,当您使用HmacSha512Signature时,标题如下所示:
{
"alg": "http://www.w3.org/2001/04/xmldsig-more#hmac-sha512",
"typ": "JWT"
}您可以使用https://jwt.io/确认这一点。
当我有同样的问题时,我发现许多库(大多是.NET之外的库)将而不是支持http://www.w3.org/2001/04/xmldsig-more#hmac-sha512作为alg属性的有效值,因为它没有包含在JSON Web算法RFC,3.1节中。
相关讨论1:https://github.com/auth0/node-jsonwebtoken/issues/662
相关讨论2:https://giters.com/jwtk/jjwt/issues/676
所以我个人决定使用HmacSha512。如果您的整个系统都是在.NET生态系统中开发的,那么您可以使用这两种系统,它们的工作方式也是一样的,但是如果令牌可以被非.NET的应用程序使用,那么最好使用HmacSha512。
https://stackoverflow.com/questions/74588231
复制相似问题