Назначение роли приложения для этого субъекта-службы пользователю, группе или субъекту-службе клиента.
Роли приложений, назначаемые субъектам-службам, также называются разрешениями приложений. Разрешения приложений можно предоставлять непосредственно в назначениях ролей приложений, а также с помощью интерфейса согласия.
Чтобы предоставить назначение роли приложения, нужны три идентификатора:
principalId: idпользователя, группы или объекта servicePrincipal клиента, которому назначается роль приложения.
resourceId: id ресурса servicePrincipal, определяющий роль приложения.
appRoleId: id объекта appRole (определенного в субъекте-службе ресурса) для назначения пользователю, группе или субъекту-службе.
Для вызова этого API требуется одно из следующих разрешений. Дополнительные сведения, включая сведения о том, как выбрать разрешения, см. в статье Разрешения.
Тип разрешения
Разрешения (в порядке повышения привилегий)
Делегированные (рабочая или учебная учетная запись)
AppRoleAssignment.ReadWrite.All и Application.Read.All, AppRoleAssignment.ReadWrite.All и Directory.Read.All
Делегированные (личная учетная запись Майкрософт)
Не поддерживается.
Приложение
AppRoleAssignment.ReadWrite.All и Application.Read.All, AppRoleAssignment.ReadWrite.All и Directory.Read.All
В делегированных сценариях вызывающему пользователю требуется по крайней мере одна из следующих Microsoft Entra ролей.
Учетные записи синхронизации каталогов
Редактор каталогов
Администратор гибридных удостоверений
Администратор управления удостоверениями
Администратор привилегированных ролей
Администратор пользователей
Администратор приложения
Администратор облачного приложения
HTTP-запрос
Вы можете обратиться к субъекту-службе, используя его идентификатор или appId. Id и appId называются идентификатором объекта и идентификатором приложения (клиента) соответственно в регистрациях приложений в Центр администрирования Microsoft Entra.
POST /servicePrincipals/{id}/appRoleAssignedTo
POST /servicePrincipals(appId='{appId}')/appRoleAssignedTo
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new AppRoleAssignment
{
PrincipalId = Guid.Parse("33ad69f9-da99-4bed-acd0-3f24235cb296"),
ResourceId = Guid.Parse("9028d19c-26a9-4809-8e3f-20ff73e2d75e"),
AppRoleId = Guid.Parse("ef7437e6-4f94-4a0a-a110-a439eb2aa8f7"),
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals["{servicePrincipal-id}"].AppRoleAssignedTo.PostAsync(requestBody);
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc service-principals app-role-assigned-to create --service-principal-id {servicePrincipal-id} --body '{\
"principalId": "33ad69f9-da99-4bed-acd0-3f24235cb296",\
"resourceId": "9028d19c-26a9-4809-8e3f-20ff73e2d75e",\
"appRoleId": "ef7437e6-4f94-4a0a-a110-a439eb2aa8f7"\
}\
'
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
AppRoleAssignment appRoleAssignment = new AppRoleAssignment();
appRoleAssignment.setPrincipalId(UUID.fromString("33ad69f9-da99-4bed-acd0-3f24235cb296"));
appRoleAssignment.setResourceId(UUID.fromString("9028d19c-26a9-4809-8e3f-20ff73e2d75e"));
appRoleAssignment.setAppRoleId(UUID.fromString("ef7437e6-4f94-4a0a-a110-a439eb2aa8f7"));
AppRoleAssignment result = graphClient.servicePrincipals().byServicePrincipalId("{servicePrincipal-id}").appRoleAssignedTo().post(appRoleAssignment);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\AppRoleAssignment;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new AppRoleAssignment();
$requestBody->setPrincipalId('33ad69f9-da99-4bed-acd0-3f24235cb296');
$requestBody->setResourceId('9028d19c-26a9-4809-8e3f-20ff73e2d75e');
$requestBody->setAppRoleId('ef7437e6-4f94-4a0a-a110-a439eb2aa8f7');
$result = $graphServiceClient->servicePrincipals()->byServicePrincipalId('servicePrincipal-id')->appRoleAssignedTo()->post($requestBody)->wait();
В этом примере {id} и {resourceId-value} оба будут id субъекта-службы ресурса, а {principalId} будет id назначенного пользователя, группы или субъекта-службы клиента.
Отклик
Ниже показан пример отклика.
Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе https://aka.ms/ContentUserFeedback.