Jwt.io 自行填充签名

Jwt.io self populating the signature

我对 jwt 和签名验证还很陌生。我有一个非常基本的查询。 我正在从 MSAL(AAD) 生成令牌。 当我在 jwt.io 中使用令牌时,我可以看到它自动填充密钥并将签名标记为已验证。 jwt.io 是怎么知道的?

从生成令牌的角度来看,我没有在任何地方明确提到生成带有任何秘密的令牌。

你没有在这里显示你的令牌的详细信息(这没关系),但我假设令牌在 header 中有一个 kid 并且可能还有一个 jku .

kid就是Key Id, and the jku the JSON Web Key Set URL。 在那个URL下面(你可以粘贴到浏览器看看)你可以找到一组JWKs(JSON Web Keys), basically a collection of public keys in a special format. In case of tokens issued by AAD you the JWKS_URI can be found on https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration.

JWT.io 可以读取此信息并找到具有给定 kid 的密钥并根据该密钥验证令牌。

本文Q/A更详细地解释了 AAD 发出的 JWT 的验证。