我已在我的 Entra ID 上注册了一个应用程序(只是作为空占位符创建,未与应用程序服务等 Azure 资源连接;仅受众:Microsoft.Graph),并且我使用邮递员成功检索了令牌。
我有一个 Spring Boot 应用程序,在我的电脑上本地运行,它公开了一个 API;作为测试,我尝试使用 Entra 的 jwt 令牌以编程方式“保护”此 API:
我的身份验证配置
对于密钥,我使用从 jwt.io 检索的模数、指数和加密(RSA),但代码仍然给出了无效令牌的错误(使用来自其他身份提供商的令牌尝试相同的操作效果很好) .
注意:带有 aud 的访问令牌作为 Microsoft Graph 并不意味着要进行验证。
当我尝试验证 Microsoft Graph API 令牌时,我得到了相同的错误:
我生成了访问令牌,其scope为
https://graph.microsoft.com/.default
因此直接传递令牌而不验证它并调用 Microsoft Graph API。
如果您想验证 API,请添加范围:
并添加API权限,如下所示:
使用 scope 作为 api://ClientID/.default
:
生成了访问令牌
签名验证成功
参考: