Я хочу удалить пользователя из Azure AD B2C с помощью графического API. Я регистрирую новое приложение для этой цели, чтобы получить разрешение на API графа. Создать приложение
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
Вы хотите предоставить роль 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"
}
]
}
]
}
Конечная точка задокументирована здесь
Отредактировал мой ответ, чтобы правильно ответить на ваш вопрос.
Спасибо за помощь. Это то, что я ищу. В документе ничего не упоминается о роли, верно? Где я должен установить разрешение «User.ReadWrite.All» в объекте полезной нагрузки. Что означает этот «id»: «741f803b-c850-494e-b5df-cde7c675a1ca»?
Администратор пользователя — это роль каталога, а не роль приложения. Вам необходимо использовать эту конечную точку в 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.
при вызове вышеуказанного URL-адреса «appRoles»: [] и «requiredResourceAccess»: [] становится пустым