Azure active directory Azure AD:授予服务主体的批准失败,带有“批准”;代码";:&引用;请求“U ResourceNotFound”;
我正在尝试为应用程序创建“服务主体”,并使用Microsoft graph API授予管理员权限许可 我遵循以下步骤:Azure active directory Azure AD:授予服务主体的批准失败,带有“批准”;代码";:&引用;请求“U ResourceNotFound”;,azure-active-directory,microsoft-graph-api,azure-service-principal,Azure Active Directory,Microsoft Graph Api,Azure Service Principal,我正在尝试为应用程序创建“服务主体”,并使用Microsoft graph API授予管理员权限许可 我遵循以下步骤: 使用graph API在租户中创建应用程序。我的请求机构是: { “displayName”:“AppWithPermissions”, “requiredResourceAccess”:[ { “resourceAppId:“00000002-0000-0ff1-ce00-000000000000”, “资源访问”:[ { “id”:“dc890d15-9560-4a4c-9
{
“displayName”:“AppWithPermissions”,
“requiredResourceAccess”:[
{
“resourceAppId:“00000002-0000-0ff1-ce00-000000000000”,
“资源访问”:[
{
“id”:“dc890d15-9560-4a4c-9b7f-a736ec74ec40”,
“类型”:“角色”
}
]
}
]
}
https://graph.microsoft.com/v1.0/servicePrincipals/{id}/approvalsignedto
请求机构:
{
“principalId”:“principalId_id”,
“资源id”:“资源id”,
“批准id”:“批准id”
}
- 添加屏幕截图以更好地理解:
principalId
:通常是您的服务主体id
resourceId
:通常是您的服务主体id
appRoleId
:对于appRoleId,您可以通过请求GET来找到它https://graph.microsoft.com/v1.0/servicePrincipals/{id}。
授予服务负责人批准:
看起来您使用的是appId而不是id值 在应用程序角色分配中,
resourceId
是资源应用程序的servicePrincipal的id(在您的例子中,是API)。在应用程序对象的requiredResourceAccess中,使用的是不同的值appId
要查找您知道其应用id的服务主体的id:
GEThttps://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId等式“{app id}”
响应将包含servicePrincipal对象的id属性,您可以在创建应用程序角色分配时使用该属性。感谢您的响应。在我的例子“appRoles”:[]数组为NULL。您在创建服务主体时是否执行了任何额外的步骤?我还有一个问题:我们没有从“requiredResourceAccess”数组元素中获取“ApprovleId”?@PoojaDabhade您可以在应用程序清单中找到它,转到Azure ad>应用程序注册>您的应用程序>清单查看:我也做了同样的事情,但出现了如所附屏幕截图所示的错误:@PoojaDabhade尝试使用自定义ApprovleId,您可以通过在AD中自定义清单来自定义批准,转到Azure AD>应用程序注册>您的应用程序>清单以查找批准并对其进行自定义,请参见:我也尝试过。但现在面临的另一个问题是:谢谢菲利普。让我澄清一下我的理解,{resourceId}、{principalId}与servicePrincipal对象的id属性相同。但我仍然没有得到{appRoleId}的值应该是多少?在我对servicePrincipal对象的响应中,“appRoles”数组为空。它与“requiredResourceAccess”数组中的值无关?如果检索API的
servicePrincipal
(例如GET…/servicePrincipals?$filter=appId eq“0000000 3-0000-0000-c000-0000000”
),结果将具有一个appRoles
属性,该属性将为该API定义所有应用程序角色。然而,在您的例子中,您似乎已经知道{appRoleId}值(例如5b567255-7703-4780-807c-7be8301ae99b、75359482-378d-4052-8f01-80520e7db3cd等),所以您可以直接使用它。我不能将这些值(例如5b567255-7703-4780-807c-7be8301ae99b、75359482-378d-4052-8f01-80520e7db3cd等)用于{appRoleId}。我收到以下错误:“消息”:“未在应用程序上找到正在分配的权限”。在创建应用程序时,我们需要为应用程序定义“appRoles”数组。您是否可以更新您的问题,以包括您为创建应用程序角色分配(包括正文)而进行的查询?我已使用步骤和屏幕截图更新了我的问题。请参考。