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
Область действия: Сайты.Выбрано
Можете ли вы включить скриншот колонки разрешений API? и какой GraphEndpoint вы пытаетесь?
Скриншот разрешения @Rukmini обновлен. .. Ой, похоже, мне нужно добавить Sites.Selected как делегированное разрешение.
Какую GraphEndpoint вы вызываете?
Да, поскольку вы добавили разрешение API типа приложения, требуется согласие администратора, что вызывает ошибку.
Я проверяю, как обстоят дела по этому вопросу. Поможет ли вам ответ Рукмини?
Я создал приложение Microsoft Entra ID и добавил такие же разрешения API, как и вы:
Когда я попытался скачать файл, у меня возникла та же ошибка, что и у вас:
Ошибка обычно возникает, если согласие администратора не предоставлено разрешениям API, требующим согласия.
Следовательно, чтобы устранить ошибку, либо предоставьте согласие администратора на разрешения 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 на русском
«от имени вошедшего в систему пользователя» вы выдаете себя за другого пользователя, которому требуется администратор.