我正在尝试使用graph.microsoft.com
向用户对象添加自定义属性。我为此选择了模式扩展,但是对https://graph.microsoft.com/v1.0/schemaExtensions
的POST请求返回Authorization_RequestDenied
。
首先,我通过Azure CLI(id
是我的应用程序ID)检查了权限:
az ad app permission list-grants --id 229e9b3d-5a17-4a46-930a-60e8ca114027 --show-resource-name
对于Microsoft Graph,有许多权限,但是据我了解,我只需要那里的User.ReadWrite.All
和Directory.AccessAsUser.All
。
然后,我使用Insomnia(检查功能是否存在编码问题)并使用JSON正文调用POST https://graph.microsoft.com/v1.0/schemaExtensions
:
{
"id": "extTest",
"description": "test extension",
"targetTypes": [
"User"
],
"properties": [
{
"name" : "isAvailable",
"type" : "Boolean"
}
]
}
,返回的响应是:
{
"error": {
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
"innerError": {
"request-id": "d5c1e7b3-f1c5-44c0-917d-5e43d7483bdf",
"date": "2019-06-10T13:44:36"
}
}
}
有什么我想念的吗?
答案 0 :(得分:2)
您的访问令牌似乎没有Directory.AccessAsUser.All
权限。您可以使用https://jwt.io/对其进行解码,并检查此权限是否在“ scp”中。
我已经对它进行了测试,并且可以正常工作。这是我的主要步骤。
1。向您的应用添加Directory.AccessAsUser.All权限,并点击授予管理员同意按钮。
2。使用auth code grant flow获取访问令牌。您不能在此处使用client credential grant flow,因为必须与用户登录。