一位同事和我本人一直试图了解jwt令牌如何验证令牌,但从我们的阅读中我们似乎对此感到困惑。
请有人帮助确认我的想法是否正确
我已经阅读了RS256和HS256上的jwt文档,但仍然在努力确认我的想法,因此发布了帖子。
答案 0 :(得分:5)
令牌可以使用密钥对进行数字签名,私有和公共,或使用密钥进行散列:
Id
:带有SHA256的RSA KeyPair。令牌使用私钥签名并使用公共
<PropertyEditor Removed="True" Id>
:使用SHA256的HMAC密钥。签名和验证的关键是相同的
紧凑型JWT看起来像RS256
HS256
:JWT的标头,包括用于对令牌进行签名的算法。例如hhhhh.ppppp.sssss
。编码在base64url
hhhhh
:JWT的有效负载,包含一些有用的声明,例如{"alg":"RS256","typ":"JWT"}
,ppppp
或sub
。编码在base64url
iss
:JWT的签名,使用指定的算法在base64 url编码的头和有效负载的串联上执行,并在base64中编码。 E.g exp
回答您的问题,您使用密钥对引用sssss
,客户端使用公钥验证令牌(使用HMAC密钥进行验证意味着客户端和服务器共享密钥)
使用我在上面编写的算法对令牌进行签名(未加密)。为了验证,客户端使用提供的公钥验证签名是否与令牌b64(signature(hhhhhh.pppppp))
的第一部分匹配。数字签名验证是所有现代语言都支持的标准操作。请注意,这与加密/解密
答案 1 :(得分:3)
我在学习倍数签名算法时遇到了同样的问题。因此,当我们在 JWT 中使用 RSASHA256 进行歌唱和验证歌唱时,过程如下:
答案 2 :(得分:-1)
您可以在官方网站上获得JWT授权令牌的详细说明 https://jwt.io/introduction/