Невозможно восстановить удаленного пользователя с помощью Graph API

Я пытаюсь восстановить удаленного пользователя через 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/ и он существует. Что я здесь делаю не так? Любые другие разрешения или заголовки, которые можно добавить?

Как упоминалось в этом MS Doc, для сценариев только для приложения и в дополнение к предоставлению разрешения приложения User.ReadWrite.All приложению должна быть назначена роль администратора с более высокими привилегиями. Попробуйте назначить роль User Administrator приложению и снова запустите запрос.

Sridevi 20.05.2024 09:11

Добавили ли вы необходимое разрешение для выполнения операции удаления? Кроме того, насколько давно удаленного пользователя вы пытаетесь восстановить?

Md Farid Uddin Kiron 20.05.2024 09:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
99
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первоначально я зарегистрировал одно приложение и предоставил 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

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

Субъект-служба с разрешениями API не может создать azuread_application через Terraform
Как выйти из сервера Blazor без Microsoft.Identity.Web.UI?
Могу ли я использовать Azure Data Explorer (Kusto) для запроса данных (например, групп) в Microsoft Entra Admin Center?
Как я могу использовать пользователя, вошедшего в систему tEdge, для входа в приложение React?
Невозможно создать и использовать токен для использования ACS для пользователя команды: «CallAgent должен быть создан только с токеном ACS»
Ошибка AuthenticationContext с MFA AADTS50076
Клиенту службы Microsoft Graph не удается ИСПРАВИТЬ пользовательские атрибуты безопасности
Невозможно использовать личную электронную почту с API Graph после установки идентификатора арендатора на «общий»
Создание общего API для доступа к любому BLOB-объекту в любой учетной записи хранения в клиенте
Azure AD B2C — разделение проверки электронной почты и установка пароля на два экрана