Поделиться через


Руководство. Вызов защищенного 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.ENDPOINTURL-адрес нижестоящего API. Маркер доступа также передается Authorization в поле заголовка запроса.

Успешный запрос к нижестоящему API (API Microsoft Graph) возвращает ответ JSON, хранящийся в переменной api_result , и передается шаблону display.html для отрисовки.

Добавление кода для запуска приложения

Чтобы запустить приложение, добавьте следующий фрагмент кода в конце файла app.py .

if __name__ == "__main__":
    app.run()

Тестирование приложения

Выполните следующие действия, чтобы протестировать интерфейс входа, API вызова и выйти из веб-приложения:

  1. Если вы еще не сделали этого, замените значения заполнителей в файле .env.sample сведениями о регистрации приложения Microsoft Entra (идентификатор клиента, секрет клиента и URL-адрес центра).

  2. Создайте виртуальную среду для приложения:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Установите требования с помощью pip:

    pip install -r requirements.txt
    
  4. Запустите приложение из командной строки. Убедитесь, что приложение работает на том же порту, что и URI перенаправления, настроенный ранее.

    flask run --host=localhost --port=5000
    
  5. Скопируйте URL-адрес https, отображаемый в терминале, например, https://localhost:5000и вставьте его в браузер. Рекомендуется использовать частный или инкогнито браузерный сеанс.

  6. После появления окна входа укажите учетную запись для входа и нажмите кнопку Далее:

    Снимок экрана: экран входа.

  7. Браузер перенаправит вас, чтобы указать пароль для вашей учетной записи. Введите пароль и нажмите кнопку "Войти".

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

  8. Чтобы оставаться в системе, можно выбрать "Нет" или "Да".

  9. Приложение запрашивает разрешение на обслуживание доступа к данным, к ним предоставлен доступ, вход и чтение профиля. Нажмите кнопку "Принять" , чтобы предоставить согласие на эти разрешения.

  10. Откроется следующий снимок экрана, указывающий, что вы вошли в приложение:

    Снимок экрана: пользователь, вошедшего в систему.

  11. Чтобы вызвать защищенный API и показать результаты, выберите "Вызвать подчиненный API". Успешный вызов API Microsoft Graph возвращает сведения о входе пользователя, как показано ниже.

    Снимок экрана: результаты успешного вызова API.

Выход из приложения

  1. Выберите выход из приложения.
  2. Вам будет предложено выбрать учетную запись для выхода. Выберите учетную запись, используемую для входа.
  3. Появится сообщение, указывающее, что вы выполнили выход. Теперь вы можете закрыть окно браузера.

См. также

Созданное приложение использует библиотеку удостоверений, которая абстрагирует большинство сведений о библиотеке проверки подлинности Майкрософт (MSAL) для Python. Дополнительные сведения об использовании MSAL Python для различных сценариев см. в документации по MSAL Python.