Как установить роль администратора пользователя для приложения Azure Active Directory через API графа

Я хочу удалить пользователя из Azure AD B2C с помощью графического API. Я регистрирую новое приложение для этой цели, чтобы получить разрешение на API графа. Создать приложение

  1. Затем я создаю принцип обслуживания для приложения, используя ссылку ниже. Принцип создания сервиса
  2. Следующим шагом является назначение роли пользователя приложению. Я хочу установить роль администратора пользователя для приложения.
POST https://graph.microsoft.com/v1.0/servicePrincipals/{resource-id}/appRoleAssignedTo
{ "principalId": "{principal-id}", 
  "resourceId": "{resource-id}", 
  "appRoleId": "{app-role-id}" 
}

я получил идентификатор принципа обслуживания из объекта принципа обслуживания @одата.контекст :

https://graph.microsoft.com/v1.0/$metadata#servicePrincipals/$entity
id                                     : xxxxxxxxxxxxxxxxxxxxxxxxx
deletedDateTime                        : 
accountEnabled                         : True
alternativeNames                       : {}
appDisplayName                         : xxx
appDescription                         : 
appId                                  : xxxxxxxxxx
applicationTemplateId                  : 
appOwnerOrganizationId                 : xxxxxxxxxxxxxxxx
appRoleAssignmentRequired              : False
createdDateTime                        : 
description                            : 
displayName                            : xxxx
homepage                               : 
loginUrl                               : 
logoutUrl                              : 
notes                                  : 
notificationEmailAddresses             : {}
preferredSingleSignOnMode              : 
preferredTokenSigningKeyThumbprint     : 
replyUrls                              : {}
resourceSpecificApplicationPermissions : {}
samlSingleSignOnSettings               : 
servicePrincipalNames                  : {cxxxxx}
servicePrincipalType                   : Application
signInAudience                         : AzureADMyOrg
tags                                   : {}
tokenEncryptionKeyId                   : 
verifiedPublisher                      : @{displayName=; verifiedPublisherId=; addedDateTime=}
addIns                                 : {}
appRoles                               : {}
info                                   : @{logoUrl=; marketingUrl=; privacyStatementUrl=; supportUrl=; termsOfServiceUrl=}
keyCredentials                         : {}
oauth2PermissionScopes                 : {}
passwordCredentials                    : {}

я предположил, что PrincipalId - это идентификатор объекта, а идентификатор ресурса такой же. Тогда как мне получить appRoleId

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
212
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы хотите предоставить роль User.ReadWrite.All, чтобы разрешить удаление пользователей из Azure AD. Согласно документации для этого потребуется согласие администратора.

Использование конечной точки https://graph.microsoft.com/v1.0/applications с этой полезной нагрузкой создаст регистрацию приложения с соответствующей ролью:

{
  "displayName": "My App",
  "requiredResourceAccess": [
    {
      "resourceAppId": "00000003-0000-0000-c000-000000000000",
      "resourceAccess": [
        {
          "id": "741f803b-c850-494e-b5df-cde7c675a1ca",
          "type": "Role"
        }
      ]
    }
  ]
}

Конечная точка задокументирована здесь

при вызове вышеуказанного URL-адреса «appRoles»: [] и «requiredResourceAccess»: [] становится пустым

june alex 13.12.2020 12:53

Отредактировал мой ответ, чтобы правильно ответить на ваш вопрос.

Michael 13.12.2020 15:46

Спасибо за помощь. Это то, что я ищу. В документе ничего не упоминается о роли, верно? Где я должен установить разрешение «User.ReadWrite.All» в объекте полезной нагрузки. Что означает этот «id»: «741f803b-c850-494e-b5df-cde7c675a1ca»?

june alex 14.12.2020 07:04
Ответ принят как подходящий

Администратор пользователя — это роль каталога, а не роль приложения. Вам необходимо использовать эту конечную точку в MS Graph: https://learn.microsoft.com/en-us/graph/api/directoryrole-post-members?view=graph-rest-1.0&tabs=http.

Это требует, чтобы вы сделали HTTP-запрос POST к https://graph.microsoft.com/v1.0/directoryRoles/{id}/members/$ref. Пример тела запроса из документации:

{
  "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/{user-id}"
}

Если вы хотите назначить эту роль каталога субъекту-службе, я уверен, что вы можете установить идентификатор объекта субъекта-службы в теле вместо идентификатора пользователя.

Возможно, вам потребуется сначала узнать идентификатор роли администратора пользователя на странице https://learn.microsoft.com/en-us/graph/api/directoryrole-list?view=graph-rest-1.0&tabs=http.

Другие вопросы по теме