Я действительно надеюсь, что кто-то может объяснить, почему в нашей ситуации требуется согласие администратора и, если возможно, как мы можем этого избежать. Ниже приведена упрощенная версия нашего обычного приложения, в котором мне удалось воспроизвести проблему.
Я управляю двумя арендаторами: T1, используется для разработки и где живут все регистрации / ресурсы приложений. И арендатор T2, где я контролирую все пользовательские настройки и которые мы используем для тестирования мультитенантности.
В T1 я зарегистрировал две регистрации приложений с именами 'app-frontend' и 'app-api'. Оба имеют необходимое разрешение на User.Read на Graph. Кроме того, app-api предоставляет область действия (администратор и пользователи), которая устанавливается как обязательное разрешение для внешнего интерфейса приложения. Приложение-интерфейс также зарегистрировано как известное клиентское приложение на app-api.
Теперь мы ожидаем, что, когда пользователь впервые запрашивает токен для внешнего интерфейса приложения, он запрашивает согласие и получает токен после принятия. Для любой учетной записи без прав администратора это приводит к ошибке «Требуется одобрение администратора», хотя при тестировании с пользователями из T2. Когда требуемое разрешение от app-frontend к app-api удалено, согласие отлично работает для пользователей без прав администратора.
Я прошел через несколько ответов здесь, чтобы попытаться выяснить, почему здесь требуется согласие администратора, но ни один из предложенных ответов / причин, по-видимому, не применим в нашем случае. Подводя итог:
- Параметр «Пользователи могут регистрировать приложения» включен в T2.
- Параметр «Пользователи могут дать согласие на доступ приложений к данным компании от их имени» включен в T2.
- Назначение пользователя не требуется (для регистрации любого приложения).
- Никаких других разрешений не требуется ни для одной регистрации приложения (поэтому не требуется никаких разрешений для приложения).
- Проблема возникает для запросов к конечным точкам v1 и v2.
Большинство из этих I может также потребовать согласия администратора, когда единственным разрешением на веб-интерфейсе приложения является User.Read, но проблема возникает только при наличии требуемого разрешения на область из app-api.
Если есть Требуется другая информация. Я был бы рад предоставить ее, я довольно долго пытался выяснить это.
Обновление: снимки экрана с разрешениями приложения, установленными для обеих регистраций.
Регистрация внешнего приложения: Регистрация внешнего интерфейса
Регистрация приложения API: Регистрация приложения Api