验证令牌JWT [RSA]

Rya*_*Mes 3 cryptography digital-signature jwt

一个collegue和我一直在试图了解如何JWT令牌验证令牌,但是从我们的阅读,我们似乎会混淆自己。

请有人可以帮助确认是否我的想法是正确的

  • 令牌使用私钥签名。签名是报头和有效载荷使用私有密钥加密的,并添加到JWT作为最后部分,签名的组合。
  • 为了验证令牌接收器可以使用公钥复制这一过程。他们加密头和有效载荷,看它是否一样的签名。请注意,这是不解密。该接收器没有解密令牌(这是我们不能确定的主要的东西)。-The接收机不能发行新的令牌,因为他们没有私有密钥来加密与一个新的令牌。

我看了两个RS256和HS256并仍在努力确认了我的思维,因此后期的智威汤逊文档。

小智 11

当我学习多重签名算法时,我正在处理同样的问题。因此,当我们在 JWT 中使用 RSASHA256 进行歌唱和验证歌唱时,过程如下:

  1. 符号 = RSA(SHA256(base64(标头) + "." + base64(有效负载)), private_key)
  2. 如果 RSA(Sign, public_key) 等于 SHA256(base64(header) + "." + base64(payload)),则签名有效

有关更多信息,请访问此链接:https ://www.cs.cornell.edu/courses/cs5430/2015sp/notes/rsa_sign_vs_dec.php# :~:text=RSA%20Digital%20Signatures&text=To%20sign%20a%20message %20m,结果%20等于%20the%20expected%20message.&text=那是%20the%20textbook%20description%20of%20RSA%20signatures。


ped*_*ofb 5

可以使用私钥和公钥对对令牌进行数字签名,也可以使用私钥对令牌进行散列:

  • RS256:带有SHA256的RSA KeyPair。令牌用私钥签名并使用公共验证

  • HS256:与SHA256 HMAC密钥。关键是要签名和验证相同

紧凑JWT看起来是这样的 hhhhh.ppppp.sssss

  • hhhhh:JWT的接头,包括:用于签名令牌的算法。例如{"alg":"RS256","typ":"JWT"}。编码base64url

  • ppppp:JWT的有效载荷,包括像一些有用的权利要求书sub,iss或exp。编码base64url

  • sssss:JWT的签名,使用指定的算法对标头和有效载荷的base64 url​​编码的串联执行,并以base64编码。例如b64(signature(hhhhhh.pppppp))

回答您的问题,您指的是RS256使用一对密钥对,其中客户端使用公钥来验证令牌(使用HMAC密钥进行验证将意味着客户端和服务器共享密钥)

令牌与我上面写的算法进行签名(不加密)。为了进行验证,客户端hhhhhh.pppppp使用提供的公钥验证该签名是否与令牌的第一部分匹配。数字签名验证是所有现代语言都支持的标准操作。请注意,是不一样的加密/解密