Добавление разрешений для приложения при регистрации приложения Azure

В настоящее время я изучаю регистрацию приложений Azure и кое-что не совсем понимаю. В документах Быстрый старт: настройка клиентского приложения для доступа к веб-API говорится, что «Настроенные разрешения» в разрешениях API при регистрации приложения — это, по сути, список всех разрешений, которые необходимы вашему приложению для базовой работы. Точная цитата:

В таблице Настроенные разрешения на панели разрешений API показан список разрешений, необходимых вашему приложению для основных операций, — список требуемого доступа к ресурсам (RRA). Пользователи или их администраторы должны будут согласиться с этими разрешениями, прежде чем использовать ваше приложение. Другие необязательные разрешения можно запросить позже во время выполнения (используя динамическое согласие).

дополнительно указывается, что:

Всякий раз, когда вы настраиваете разрешения, у пользователей вашего приложения при входе запрашивается их согласие разрешить вашему приложению доступ к API ресурсов от их имени.

Теперь я попытался выполнить демонстрацию быстрого запуска Python, которая выполняет вход пользователя и доступ к API MicrosoftGraph: https://github.com/Azure-Samples/ms-identity-python-webapp

В этом пошаговом руководстве я зарегистрировал свое приложение (MyClientApp) в службе регистрации приложений Azure и для тестирования добавил некоторые области из Microsoft Graph на панель разрешений API, например

Теперь, когда я запускаю приложение и пытаюсь войти в систему, мне выдается запрос согласия пользователя, но он не запрашивает разрешения ни для одной из указанных выше областей. Это дает мне:

Кто-нибудь может рассеять туман?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Не глядя на образец, я думаю, что он не запрашивает токен доступа в этом запросе. Клиент запрашивает только токен ID (с чем-то вроде scope=openid+profile).

Вам нужно указать, например. https://graph.microsoft.com/.default в качестве области действия при аутентификации пользователя для получения токена доступа. В этом случае мы используем специальную область «.default», которая сообщает AAD «просто используйте те, которые указаны в регистрации приложения». В качестве альтернативы вы можете попросить, например. https://graph.microsoft.com/AccessReview.Read.All область, требующая этого разрешения.

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

он запрашивает те области, которые вы упомянули, а также позволяет вам определить список других областей. В частности, он также запрашивает область действия User.ReadBasic.All. Одна вещь, которую я не совсем понимаю: вы сказали: «Клиент запрашивает только токен идентификатора» - насколько я знаю, с потоком кода авторизации доступ к конечной точке авторизации дает вам только код авторизации, а не фактический токен , не так ли?

YoavKlein 22.11.2022 00:04

Ну, это зависит от того, что запрашивает клиентское приложение. Вы также можете установить response_type=code+id_token, который возвращает как код, так и токен идентификатора. Но он также может только запросить код и получить только токен ID с этим кодом.

juunas 22.11.2022 07:57

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