JWT 令牌签名无效 - Azure + Spring Boot

时间:2021-04-07 13:22:27

标签: spring spring-boot jwt access-token azure-authentication

我正在使用 Azure AD 对 Spring Boot 应用程序进行用户身份验证。我创建了一个应用程序来获取登录用户的访问令牌(令牌创建者应用程序)。在此应用程序中,'/token' API 从 @RegisteredOAuth2AuthorizedClient 读取访问令牌,并返回与响应相同的令牌。

然后,我必须使用返回的令牌作为具有相同客户端 ID 和相同配置的另一个应用程序的其余 API 的不记名令牌。

但是当我使用那个访问令牌时,它给了我以下错误:

Bearer error="invalid_token", error_description="尝试解码 Jwt 时出错:签名 JWT 被拒绝:签名无效", error_uri="https://tools.ietf.org/html/rfc6750#section- 3.1"

我检查了 jwt.io 中的 JWT 令牌,它说签名无效。

我做错了什么?

提前致谢。

Access Token - JWT.io - Invalid Signature

enter image description here

1 个答案:

答案 0 :(得分:0)

您的访问令牌用于调用 Microsoft Graph API。

但是,Microsoft Graph 的访问令牌不需要通过您的代码进行验证,因为 Graph API 服务器端会对其进行验证。

换句话说,Graph 的访问令牌永远不会通过您代码中的验证。

如果访问令牌是调用您自己的 API(而不是调用 Microsoft Graph),您需要将范围指定为 [CLIENT_ID of the API app registration]/.default 而不是 https://graph.microsoft.com/.default。然后访问令牌可以成功验证。