我正在使用 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 令牌,它说签名无效。
我做错了什么?
提前致谢。
答案 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
。然后访问令牌可以成功验证。