Руководство. Вызов защищенного API и отображение результатов
В предыдущем руководстве вы добавили в приложение возможности входа и выхода. Теперь вы можете создать эти функции, чтобы разрешить пользователям, вошедшего в систему, вызывать защищенный веб-API. В целях этого руководства вы вызываете API Microsoft Graph и отображаете сведения о профиле пользователя, вошедшего в систему.
В этом руководстве рассматриваются следующие темы:
- Добавление кода для вызова защищенного нижестоящего API
- Запуск и тестирование приложения
Вызов API и отображение результатов
Чтобы вызвать защищенный API, сначала необходимо получить маркер доступа для текущего пользователя, вызвав auth.get_token_for_user
следующее:
@app.route("/call_downstream_api")
def call_downstream_api():
token = auth.get_token_for_user(app_config.SCOPE)
if "error" in token:
return redirect(url_for("login"))
# Use access token to call downstream api
api_result = requests.get(
app_config.ENDPOINT,
headers={'Authorization': 'Bearer ' + token['access_token']},
timeout=30,
).json()
return render_template('display.html', result=api_result)
Когда пользователь переходит к /call_downstream_api
маршруту URL-адреса, Flask вызывает call_downstream_api()
функцию, которая сначала пытается получить маркер доступа с помощью auth.get_token_for_user(app_config.SCOPE)
. Если в маркере возникла проблема с проверкой подлинности или какая-либо ошибка, перенаправьте пользователя на страницу входа для повторной проверки подлинности.
Если приложение успешно получает маркер доступа, он выполняет HTTP-запрос к нижестоящему requests.get(...)
API с помощью метода. В запросе указан app_config.ENDPOINT
URL-адрес нижестоящего API. Маркер доступа также передается Authorization
в поле заголовка запроса.
Успешный запрос к нижестоящему API (API Microsoft Graph) возвращает ответ JSON, хранящийся в переменной api_result
, и передается шаблону display.html
для отрисовки.
Добавление кода для запуска приложения
Чтобы запустить приложение, добавьте следующий фрагмент кода в конце файла app.py .
if __name__ == "__main__":
app.run()
Тестирование приложения
Выполните следующие действия, чтобы протестировать интерфейс входа, API вызова и выйти из веб-приложения:
Если вы еще не сделали этого, замените значения заполнителей в файле .env.sample сведениями о регистрации приложения Microsoft Entra (идентификатор клиента, секрет клиента и URL-адрес центра).
Создайте виртуальную среду для приложения:
py -m venv .venv .venv\scripts\activate
Установите требования с помощью
pip
:pip install -r requirements.txt
Запустите приложение из командной строки. Убедитесь, что приложение работает на том же порту, что и URI перенаправления, настроенный ранее.
flask run --host=localhost --port=5000
Скопируйте URL-адрес https, отображаемый в терминале, например, https://localhost:5000и вставьте его в браузер. Рекомендуется использовать частный или инкогнито браузерный сеанс.
После появления окна входа укажите учетную запись для входа и нажмите кнопку Далее:
Браузер перенаправит вас, чтобы указать пароль для вашей учетной записи. Введите пароль и нажмите кнопку "Войти".
На этом этапе поток входа может отличаться в зависимости от сведений о безопасности, необходимых вашей организации, например многофакторной проверки подлинности с помощью приложения authenticator.
Чтобы оставаться в системе, можно выбрать "Нет" или "Да".
Приложение запрашивает разрешение на обслуживание доступа к данным, к ним предоставлен доступ, вход и чтение профиля. Нажмите кнопку "Принять" , чтобы предоставить согласие на эти разрешения.
Откроется следующий снимок экрана, указывающий, что вы вошли в приложение:
Чтобы вызвать защищенный API и показать результаты, выберите "Вызвать подчиненный API". Успешный вызов API Microsoft Graph возвращает сведения о входе пользователя, как показано ниже.
Выход из приложения
- Выберите выход из приложения.
- Вам будет предложено выбрать учетную запись для выхода. Выберите учетную запись, используемую для входа.
- Появится сообщение, указывающее, что вы выполнили выход. Теперь вы можете закрыть окно браузера.
См. также
Созданное приложение использует библиотеку удостоверений, которая абстрагирует большинство сведений о библиотеке проверки подлинности Майкрософт (MSAL) для Python. Дополнительные сведения об использовании MSAL Python для различных сценариев см. в документации по MSAL Python.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по