Azure AD:为服务主体授予 appRoleAssignment 失败 "code":"Request_ResourceNotFound"
Azure AD: Grant an appRoleAssignment for a service principal is failing with "code": "Request_ResourceNotFound"
我正在尝试为应用程序创建一个“服务主体”并使用 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 集合中创建了一个应用程序角色分配:
请求如下:
Post请求:
https://graph.microsoft.com/v1.0/servicePrincipals/{id}/appRoleAssignedTo
请求正文:
{
"principalId": "principal_id",
"resourceId": "resource_id",
"appRoleId": "approle_id"
}
这里,
- “principal_id”是上面第 2 步中创建的服务主体的“id”。
- "approle_id" 是您要授予的 appRole 的 ID。 (从“requiredResourceAccess”中存在的“resourceAccess”数组中获取“id”值)
- http请求中的“id”url和“resource_id”是一样的。 (从对应于上面给出的“approle_id”的“requiredResourceAccess”中获取“resourceAppId”值)
在 运行 查询之后,我收到错误 404。
“代码”:“Request_ResourceNotFound”
对于“resource_id”/“id”字段。
- 添加屏幕截图以便更好地理解:
- 应用创建:
- 服务主体创建:
- 为服务主体授予 appRoleAssignment:
我对在哪里使用哪些 ID 感到困惑,并且没有从文档中得到一个清晰的想法。任何人都可以解决我的查询吗?提前致谢。
document描述的不是很清楚
简单来说:
principalId
:通常是你的服务主体id。
resourceId
: 通常是你的服务主体id。
appRoleId
:appRoleId可以通过请求GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}.
找到
为服务主体授予 appRoleAssignment:
您似乎在使用 appId 而不是 id 值。
在应用角色分配中,resourceId
是资源应用的 servicePrincipal 的 id(在您的情况下, API).在 application 对象的 requiredResourceAccess 中,您使用 appId,这是一个不同的值。
查找您知道 appId 的服务主体的 id:
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '{app-id}'
响应将包含 servicePrincipal 对象的 id 属性,您可以在创建应用程序时使用它角色分配。
我正在尝试为应用程序创建一个“服务主体”并使用 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 集合中创建了一个应用程序角色分配: 请求如下:
Post请求:
https://graph.microsoft.com/v1.0/servicePrincipals/{id}/appRoleAssignedTo
请求正文:
{ "principalId": "principal_id", "resourceId": "resource_id", "appRoleId": "approle_id" }
这里,
- “principal_id”是上面第 2 步中创建的服务主体的“id”。
- "approle_id" 是您要授予的 appRole 的 ID。 (从“requiredResourceAccess”中存在的“resourceAccess”数组中获取“id”值)
- http请求中的“id”url和“resource_id”是一样的。 (从对应于上面给出的“approle_id”的“requiredResourceAccess”中获取“resourceAppId”值)
在 运行 查询之后,我收到错误 404。 “代码”:“Request_ResourceNotFound” 对于“resource_id”/“id”字段。
- 添加屏幕截图以便更好地理解:
- 应用创建:
- 服务主体创建:
- 为服务主体授予 appRoleAssignment:
我对在哪里使用哪些 ID 感到困惑,并且没有从文档中得到一个清晰的想法。任何人都可以解决我的查询吗?提前致谢。
document描述的不是很清楚
简单来说:
principalId
:通常是你的服务主体id。
resourceId
: 通常是你的服务主体id。
appRoleId
:appRoleId可以通过请求GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}.
找到
为服务主体授予 appRoleAssignment:
您似乎在使用 appId 而不是 id 值。
在应用角色分配中,resourceId
是资源应用的 servicePrincipal 的 id(在您的情况下, API).在 application 对象的 requiredResourceAccess 中,您使用 appId,这是一个不同的值。
查找您知道 appId 的服务主体的 id:
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '{app-id}'
响应将包含 servicePrincipal 对象的 id 属性,您可以在创建应用程序时使用它角色分配。