我正在尝试使用 Service Principal 和 ms graph api 来调用 beta synchronization/jobs/ 端点,但收到 401 Unauthorized 错误。
现在我知道文档中说我需要 Application.ReadWrite.OwnedBy
或 Directory.ReadWrite.All
范围,但我更愿意使用分配给服务主体的角色权限来保持更细化的访问。
我已将 Principal 分配给应用程序管理员角色,这允许我访问 https://graph.microsoft.com/beta/servicePrincipals/{object-id}/,但是当我尝试 https://graph.microsoft.com/beta/servicePrincipals/{object-id}/synchronization/jobs/ 时,我得到了一个 401 代码
{
"error": {
"code": "UnknownError",
"message": "",
"innerError": {
"date": "2021-06-28T14:35:44",
"request-id": "5c5532e5-b506-475b-b926-8b3ec36525d7",
"client-request-id": "5c5532e5-b506-475b-b926-8b3ec36525d7"
}
}
}
是否缺少某些角色权限,或者此端点是否与角色权限不兼容?或者很可能是我很傻,遗漏了什么?
我已经尝试使用 golang adal 包和 az account get-access-token --resource https://graph.microsoft.com
命令来获取令牌。
当我以具有全局管理员角色的 AAD 用户身份进行身份验证后,我可以访问此端点。
答案 0 :(得分:0)
Microsoft Graph 的应用权限不能完全替换为目录角色权限。它们不能相互替代。
一般来说,AAD Graph的权限和目录角色权限有一定的重叠。但 Microsoft Graph 不是。
在这种情况下,请使用应用程序权限 Application.ReadWrite.OwnedBy
或 Directory.ReadWrite.All
。