API MS graph не может предоставлять роли приложения - PullRequest
0 голосов
/ 26 апреля 2020

Я не могу предоставить роль приложения с помощью API графа. Ниже приведен код

Код

 IConfidentialClientApplication app = ConfidentialClientFactory.SpnAuthenticate(_configuration["ClientId"],
                                                                                           _configuration["ClientSecret"],
                                                                                           _configuration["TenantId"]);
            ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication: app);
            Beta.GraphServiceClient graphClient = new Beta.GraphServiceClient(authProvider);
            var appRoleAssignment = new Beta.AppRoleAssignment
            {
                AppRoleId = model.appRoleId,
                ResourceId = model.resourceId,
                ResourceDisplayName = "resourceDisplayName-value"

            };

            var respone = await graphClient.ServicePrincipals[model.servicePrincipalId].AppRoleAssignments
                .Request()
                .AddAsync(appRoleAssignment);

Ошибка

Status Code: BadRequest
Microsoft.Graph.ServiceException: Code: Request_BadRequest
Message: Not a valid reference update.
Inner error:
    AdditionalData:
    request-id: 9e94e7e1-b4bf-415e-8aee-7d6d199dbe1b
    date: 2020-04-26T06:43:59
ClientRequestId: 9e94e7e1-b4bf-415e-8aee-7d6d199dbe1b

Свойства функции назначения роли приложения

appRoleId
creationTimestamp
PrincipalDisplayName 
principalId
principalDisplayName
resourceDisplayName
ResourceId 

Может кто-нибудь помочь мне определить правильный код?

1 Ответ

0 голосов
/ 26 апреля 2020

Я нашел проблему. Спасибо @ juunas

Обновленный код:

IConfidentialClientApplication app = ConfidentialClientFactory.SpnAuthenticate(_configuration["ClientId"],_configuration["ClientSecret"],_configuration["TenantId"]);

            ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication: app);
            Beta.GraphServiceClient graphClient = new Beta.GraphServiceClient(authProvider);
            var appRoleAssignment = new Beta.AppRoleAssignment
            {
                AppRoleId = model.appRoleId,
                ResourceId = model.resourceId,
                ResourceDisplayName = "resourceDisplayName-value",
                PrincipalId = model.servicePrincipalId
            };

            var respone = await graphClient.ServicePrincipals[model.servicePrincipalId].AppRoleAssignments
                .Request()
                .AddAsync(appRoleAssignment);
...