Почему для настройки регистрации моего приложения требуется согласие администратора? - PullRequest
0 голосов
/ 22 апреля 2020

Я действительно надеюсь, что кто-то может объяснить, почему в нашей ситуации требуется согласие администратора и, если возможно, как мы можем этого избежать. Ниже приведена упрощенная версия нашего обычного приложения, в котором мне удалось воспроизвести проблему.

Я управляю двумя арендаторами: 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

Ответы [ 3 ]

0 голосов
/ 27 апреля 2020

это делегированное согласие, а не согласие администратора. Пожалуйста, ознакомьтесь с различными типами разрешений на Делегированные разрешения, Разрешения приложений и действующие разрешения

0 голосов
/ 30 апреля 2020

Я нашел решение проблемы в нашем случае:

Причиной согласия администратора в нашей ситуации стал тот факт, что издатель регистрации приложения показывал как непроверенный. Он был связан с доменом нашего Azure арендатора (* .onmicrosoft.com), который недопустим в качестве домена издателя.

Удивительно, но это, похоже, повлияло на то, требуется ли согласие администратора или нет в сценарии. После изменения и проверки регистрации приложения на другом домене требование о согласии администратора мгновенно исчезло.

Также примечание: похоже, это не относится к более ранним регистрациям приложений. У нас есть несколько регистраций приложений с конца 2018 года, которые использовали один и тот же домен (* .onmicrosoft.com). Однако эти регистрации приложений не отображаются как непроверенные на экране согласия, а также не требуют согласия администратора. Я подозреваю, что регистрация приложений произошла до того, как произошло определенное изменение, чтобы не требовать согласия.

0 голосов
/ 27 апреля 2020

Я не воспроизвел вашу проблему на моей стороне, см. Мои шаги, как показано ниже.

1.создание tonyFronEnd приложения и tonyBackend приложения в клиенте A, оба они являются мультитенантным приложением. Кроме того, приложение tonyFronEnd имеет доступ к приложению tonyBackend. И File.Read не требует согласия администратора.

enter image description here

enter image description here

2.use пользователь из tennatB для входа в приложение tonyFronEnd

 https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=90ffbdb4-5b89-4bbc-9f90-d42b2419294c
&response_type=code
&redirect_uri=https://localhost:8080
&response_mode=query
&scope=openid api://08b3e812-2141-47af-a00a-75de13d3916d/Files.Read
&state=12345

Согласие администратора не требуется.

enter image description here

update: (user cons enet)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...