microsoft-graph-api - Microsoft Graph API 角色声明不在令牌中,但添加了应用程序权限
问题描述
我正在尝试连接到 Microsoft Graph API 以使用 excel 函数,作为服务器到服务器的连接/流。 https://docs.microsoft.com/en-us/graph/excel-use-functions
在 Azure AD 中,我构建了注册的应用程序:
我已经创建了秘密......并且还添加了 API 权限。
在邮递员中,我可以很好地获得令牌......但我注意到角色不包含在令牌中。这是请求:
然后,当我向 RATE 的 excel 函数发出请求时,我收到此错误:
{
"error": {
"code": "AccessDenied",
"message": "Either scp or roles claim need to be present in the token.",
"innerError": {
"date": "2021-08-17T14:31:04",
"request-id": "b0d65e3c-4acd-4a8a-82c4-1c4c5f2216ac",
"client-request-id": "b0d65e3c-4acd-4a8a-82c4-1c4c5f2216ac"
}
}
}
我仍然在这里的每一篇文章都提到 API 权限并以管理员身份授予同意……我已经完成了,但我仍然收到错误消息。有什么想法吗?
解决方案
请检查是否有任何声明映射策略链接到应用程序服务主体。
- 导航到 Azure Active Directory > 企业应用程序 > 使用您在令牌请求中使用的客户端 ID 进行搜索 > 复制应用程序的对象 ID。请记住,此对象 ID 与应用程序注册下存在的应用程序对象的对象 ID 不同。
- 运行
Get-AzureADServicePrincipalPolicy -Id object_id_copied_in_step_1 | fl
以检查是否有任何声明映射策略链接。 - 如果有与其链接的 cliams 映射策略,请运行
Remove-AzureADServicePrincipalPolicy
以删除该策略。
在https://jwt.ms解码您的不记名令牌,以确认角色声明是否已填充。在这种情况下不会填充 SCP 声明,因为它仅在用户上下文中获取令牌时才会填充。