#azure #microsoft-graph-api #azure-ad-b2c
#azure #microsoft-graph-api #azure-ad-b2c
Вопрос:
Я хочу удалить пользователя из Azure AD B2C с помощью graph API. Я регистрирую новое приложение для этой цели, чтобы получить разрешение на graph API. Создать приложение
- Затем я создаю принцип обслуживания для приложения, используя приведенную ниже ссылку Создать принцип обслуживания
- следующий шаг — назначение роли пользователя приложению.Я хочу установить роль администратора пользователя для приложения
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»?