我对jwt和签名验证非常陌生。我有一个非常基本的查询。 我正在从MSAL(AAD)生成令牌。 当我在jwt.io中使用令牌时,可以看到它会自动填充秘密密钥并将签名标记为已验证。 jwt.io如何知道这一点?
从生成令牌的角度来看,我没有在任何地方明确提及要使用任何秘密来生成令牌。
答案 0 :(得分:1)
您无需在此处显示令牌的详细信息(可以),但是我认为令牌的标头中有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的验证。