Я пытаюсь восстановить удаленного пользователя через Graph API. Я следую документации здесь: https://learn.microsoft.com/en-us/graph/api/directory-deleteditems-restore?view=graph-rest-1.0&tabs=http
Я создал приложение Azure, добавил разрешения для приложения User.ReadWrite.All и уже авторизовал приложение с помощью глобального администратора. Я сгенерировал токен доступа и вижу, что разрешение User.ReadWrite.All существует в ролях токена.
Когда я запрашиваю POST https://graph.microsoft.com/v1.0/directory/deletedItems//restore, я получаю ответ ниже.
{
"error": {
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
"innerError": {
"date": "2024-05-20T06:55:15",
"request-id": "43e68cc6-9b45-4625-8fcc-e88cb4353ce9",
"client-request-id": "43e68cc6-9b45-4625-8fcc-e88cb4353ce9"
}
}
}
Я даже пытался добавить к приложению разрешение Directory.ReadWrite.All, но потерпел неудачу с той же ошибкой. Я подтвердил существование удаленного объекта пользователя с помощью GET https://graph.microsoft.com/v1.0/directory/deletedItems/ и он существует. Что я здесь делаю не так? Любые другие разрешения или заголовки, которые можно добавить?
Добавили ли вы необходимое разрешение для выполнения операции удаления? Кроме того, насколько давно удаленного пользователя вы пытаетесь восстановить?





Первоначально я зарегистрировал одно приложение и предоставил User.ReadWrite.All разрешение типа приложения, как показано ниже:
Теперь я сгенерировал токен доступа, используя поток учетных данных клиента через Postman, следующим образом:
POST https://login.microsoftonline.com/tenantId/oauth2/v2.0/token
grant_type:client_credentials
client_id: appId
client_secret: secret
scope: https://graph.microsoft.com/.default
Ответ:
Когда я попытался восстановить удаленного пользователя с помощью этого токена, я тоже получил ту же ошибку, что и ниже:
POST https://graph.microsoft.com/v1.0/directory/deletedItems/userID/restore
Ответ:
Как упоминалось в этом MS Док , приложению должна быть назначена роль администратора с более высоким уровнем привилегий, чтобы восстановить удаленных пользователей вместе с приложением
User.ReadWrite.Allразрешение для сценариев только для приложений.
В моем случае я назначил приложению роль администратора пользователя следующим образом:
Перейдите на портал Azure -> Microsoft Entra ID -> Роли и администраторы -> Администратор пользователей -> Добавить назначения.
Когда я снова сгенерировал токен после назначения роли и выполнил запрос POST, я успешно получил ответ:
POST https://graph.microsoft.com/v1.0/directory/deletedItems/userID/restore
Ответ:
Если удаленному пользователю назначена какая-либо роль каталога, приложению должна быть назначена роль с более высоким уровнем привилегий, например «Глобальный администратор», чем этому удаленному пользователю.
Обратите внимание, что вы можете восстановить только тех пользователей, которые были удалены 30 дней назад, поскольку после этого они будут удалены навсегда.
Ссылка:
Работа с пользователями в Microsoft Graph — Microsoft Graph v1.0
Как упоминалось в этом MS Doc, для сценариев только для приложения и в дополнение к предоставлению разрешения приложения User.ReadWrite.All приложению должна быть назначена роль администратора с более высокими привилегиями. Попробуйте назначить роль
User Administratorприложению и снова запустите запрос.