【发布时间】:2020-11-02 08:41:27
【问题描述】:
我对 jwt 和签名验证非常陌生。我有一个非常基本的查询。 我正在从 MSAL(AAD) 生成一个令牌。 当我在 jwt.io 中使用令牌时,我可以看到它会自动填充密钥并将签名标记为已验证。 jwt.io 是怎么知道的?
从生成令牌的角度来看,我没有明确提到要生成带有任何秘密的令牌。
【问题讨论】:
我对 jwt 和签名验证非常陌生。我有一个非常基本的查询。 我正在从 MSAL(AAD) 生成一个令牌。 当我在 jwt.io 中使用令牌时,我可以看到它会自动填充密钥并将签名标记为已验证。 jwt.io 是怎么知道的?
从生成令牌的角度来看,我没有明确提到要生成带有任何秘密的令牌。
【问题讨论】:
您没有在此处显示您的令牌的详细信息(这没关系),但我假设该令牌在标题中有一个 kid 并且可能还有一个 jku。
kid 是 Key Id,jku 是 JSON Web Key Set URL。
在该 URL 下(您可以将其粘贴到浏览器中查看),您可以找到一组 JWK (JSON Web Keys),基本上是特殊格式的公钥集合。如果是 AAD 颁发的令牌,您可以在 https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration 上找到 JWKS_URI。
JWT.io 可以读取此信息并找到具有给定 kid 的密钥,并据此验证令牌。
此Q/A 更详细地解释了 AAD 颁发的 JWT 验证。
【讨论】: