как установить роль администратора пользователя для приложения Azure active Directory через graph API

#azure #microsoft-graph-api #azure-ad-b2c

#azure #microsoft-graph-api #azure-ad-b2c

Вопрос:

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

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

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

 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 — это идентификатор объекта, а идентификатор ресурса такой же.
Тогда как мне получить идентификатор доступа

Ответ №1:

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

Ответ №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"
        }
      ]
    }
  ]
}
 

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

Комментарии:

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

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

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