JWT 令牌需要签名密钥才能对其进行解码,但在 https://jwt.io/ 中可以在没有任何签名密钥的情况下对其进行解码,这怎么可能。
答案 0 :(得分:1)
您不需要密钥来打开编码,您需要一个密钥来验证没有人更改 JWT 的内容。事实上,您看到的字符串只是 json 的 base64,包含您的信息、元数据和所有内容的“签名”。
签名是 JSON Web Token (JWT) 中最重要的部分。签名是通过使用 Base64url 编码对标头和有效负载进行编码并将它们与句点分隔符连接来计算的。然后将其提供给密码算法。
// signature algorithm
data = base64urlEncode( header ) + “.” + base64urlEncode( payload )
signature = HMAC-SHA256( data, secret_salt )
因此,当标头或有效载荷发生变化时,必须重新计算签名。只有身份提供者(IdP)有私钥来计算签名,防止令牌被篡改。
阅读更多:
https://medium.com/@sureshdsk/how-json-web-token-jwt-authentication-works-585c4f076033 https://jwt.io/introduction/