Ошибка «Требуется одобрение администратора» при использовании делегированного разрешения «Sites.Selected» для загрузки документов SharePoint

1Я использую область делегированных разрешений «Sites.Selected» для чтения файлов из SharePoint от имени вошедшего в систему пользователя. Я предоставил моему приложению Azure AD делегированное разрешение на чтение на определенном сайте, а также добавил разрешение Sites.Selected в свое приложение Azure AD. Теоретически мое приложение должно иметь возможность загружать документы для вошедшего в систему пользователя.

Для создания токена я использую область Sites.Selected, которую затем отправляю в API Graph для загрузки документов пользователя. Однако когда я пытаюсь войти в систему, на странице входа Microsoft отображается сообщение об ошибке, в котором говорится, что мне нужно одобрение администратора.

Может ли кто-нибудь объяснить, почему я сталкиваюсь с сообщением об ошибке «Требуется одобрение администратора» при попытке войти в свое приложение, несмотря на наличие необходимых разрешений?

Пример кода: https://github.com/Azure-Samples/active-directory-dotnet-desktop-msgraph-v2

Область действия: Сайты.Выбрано

Ошибка «Требуется одобрение администратора» при использовании делегированного разрешения «Sites.Selected» для загрузки документов SharePoint

«от имени вошедшего в систему пользователя» вы выдаете себя за другого пользователя, которому требуется администратор.

jdweng 18.08.2024 14:50

Можете ли вы включить скриншот колонки разрешений API? и какой GraphEndpoint вы пытаетесь?

Rukmini 19.08.2024 09:43

Скриншот разрешения @Rukmini обновлен. .. Ой, похоже, мне нужно добавить Sites.Selected как делегированное разрешение.

Mannan Bahelim 19.08.2024 11:13

Какую GraphEndpoint вы вызываете?

Rukmini 19.08.2024 11:18

Да, поскольку вы добавили разрешение API типа приложения, требуется согласие администратора, что вызывает ошибку.

Rukmini 19.08.2024 11:19

Я проверяю, как обстоят дела по этому вопросу. Поможет ли вам ответ Рукмини?

Xyza_MSFT 21.08.2024 10:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
6
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я создал приложение Microsoft Entra ID и добавил такие же разрешения API, как и вы:

Когда я попытался скачать файл, у меня возникла та же ошибка, что и у вас:

Ошибка обычно возникает, если согласие администратора не предоставлено разрешениям API, требующим согласия.

  • Или если в настройках согласия пользователя в приложении Enterprise установлено значение «Не разрешать согласие пользователя».

Следовательно, чтобы устранить ошибку, либо предоставьте согласие администратора на разрешения API, добавленные в приложение, ИЛИ установите в настройках согласия пользователя значение «Разрешить согласие пользователя для приложений», как показано ниже:

Перейдите в Корпоративные приложения -> Согласие и разрешения -> Настройки согласия пользователя.

Вы также можете выбрать параметр «Разрешить согласие пользователя на приложения от проверенных издателей для выбранных разрешений (рекомендуется)» и установить необходимые разрешения.

Теперь пользователь может дать согласие на приложения:

Теперь пользователь может дать согласие на использование приложений и вызвать API.

Разрешение Sites.Selected API позволит получить доступ только к выбранным сайтам, которые настроены, как описано в этом блоге Патрика Роджерса.

Например, я попытался загрузить файл вошедшего пользователя, передав идентификатор элемента.

Чтобы это работало, я добавил Files.ReadWrite делегированное разрешение API:

string graphAPIEndpoint = "https://graph.microsoft.com/v1.0/me/drive/items/ItemID";
string[] scopes = new string[] { "Files.ReadWrite" };

В зависимости от API, который вы вызываете, вам необходимо добавить разрешение к приложению Microsoft Entra ID.

Ссылка:

Активный каталог Azure — API Microsoft Graph — «Требуется одобрение администратора» при доступе к API назначений с учетными записями, не являющимися администраторами — Stack Overflow на русском

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