我正在尝试为应用程序创建一个“服务主体”,并使用Microsoft graph API授予管理员对该权限的同意。
我遵循以下步骤:
使用图形API在租户中创建的应用程序。我的请求正文是:
{
"displayName": "AppWithPermissions",
"requiredResourceAccess": [
{
"resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
"resourceAccess": [
{
"id": "dc890d15-9560-4a4c-9b7f-a736ec74ec40",
"type": "Role"
}
]
}
]
}
为上述创建的应用程序创建了服务主体。创建成功。
现在,我想使用图形API通过编程方式为每个分配的权限授予管理员同意。
要授予应用程序权限,我在API服务主体的appRoleAssignedTo集合中创建了应用程序角色分配: 请求如下:
发布请求:
https://graph.microsoft.com/v1.0/servicePrincipals/{id}/appRoleAssignedTo
请求正文:
{
"principalId": "principal_id",
"resourceId": "resource_id",
"appRoleId": "approle_id"
}
在这里
运行查询后,出现错误404。 “代码”:“ Request_ResourceNotFound” 用于“ resource_id” /“ id”字段。
我对于在哪里使用哪些ID感到困惑,并且从文档中没有得到清晰的主意。有人可以解决我的查询吗?预先感谢。
答案 0 :(得分:1)
您似乎正在使用 appId 而不是 id 值。
在应用角色分配中,resourceId
是资源应用(在您的情况下为API)的 servicePrincipal 的 id 。在应用对象的 requiredResourceAccess 中,您使用 appId ,这是一个不同的值。
要查找您知道其 appId 的服务主体的 id :
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '{app-id}'
响应将包含 servicePrincipal 对象的 id 属性,您可以在创建应用角色分配时使用该属性。
答案 1 :(得分:-1)
document的描述不是很清楚。
简单来说:
principalId
:通常是您的服务主体ID。
resourceId
:通常是您的服务主体ID。
appRoleId
:对于appRoleId,您可以通过请求GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}.
来找到它