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


Краткое руководство. Вход пользователей и вызов Microsoft Graph из веб-приложения Python Flask

В этом кратком руководстве вы скачайте и запустите пример веб-приложения Python Flask, демонстрирующий проверку подлинности пользователей и вызов API Microsoft Graph. Пользователи в организации Microsoft Entra могут войти в приложение.

Необходимые компоненты

Шаг 1. Регистрация приложения

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

Выполните следующие действия, чтобы зарегистрировать приложение в Центре администрирования Microsoft Entra:

  1. Войдите в Центр администрирования Microsoft Entra как минимум облачные приложения Администратор istrator.
  2. Если у вас есть доступ к нескольким клиентам, используйте значок Параметры в верхнем меню, чтобы переключиться на клиент, в котором вы хотите зарегистрировать приложение из меню каталогов и подписок.
  3. Перейдите к приложениям> удостоверений>Регистрация приложений и выберите "Создать регистрацию".
  4. Введите имя приложения, например python-webapp.
  5. В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации.
  6. В разделе URI перенаправления выберите Веб-сайт для платформы.
  7. Введите универсальный код ресурса (URI) перенаправления http://localhost:5000/getAToken. Это значение можно изменить позже.
  8. Выберите Зарегистрировать.

Шаг 2. Добавление секрета клиента

В примере приложения используется секрет клиента для подтверждения удостоверения при запросе маркеров. Выполните следующие действия, чтобы создать секрет клиента для веб-приложения Python:

  1. На странице приложения Обзор запишите идентификатор приложения (клиента) для использования в будущем.
  2. В разделе Управление выберите Сертификаты и секреты, а в разделе Секреты клиента — Создать секрет клиента.
  3. Введите описание секрета клиента, оставьте срок действия по умолчанию и нажмите кнопку "Добавить".
  4. Сохраните значение секрета клиента в безопасном расположении. Это значение нужно настроить, и вы не сможете получить его позже.

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

Шаг 3. Добавление область

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

  1. В разделе Управление выберите Разрешения API>Добавить разрешение.
  2. Убедитесь, что выбрана вкладка API Майкрософт.
  3. В разделе Часто используемые интерфейсы API Microsoft выберите Microsoft Graph.
  4. В разделе "Делегированные разрешения" убедитесь, что выбран параметр User.Read. При необходимости используйте поле поиска.
  5. Выберите Добавить разрешения.

Шаг 4. Скачивание примера приложения

Скачайте пример кода Python или клонируйте репозиторий:

git clone https://github.com/Azure-Samples/ms-identity-docs-code-python/

Шаг 5. Настройка примера приложения

  1. Откройте приложение, скачаемое в интегрированной среде разработки, и перейдите в корневую папку примера приложения.

    cd flask-web-app
    
  2. Создайте env-файл в корневой папке проекта с помощью env.sample в качестве руководства.

    # The following variables are required for the app to run.
    CLIENT_ID=<Enter_your_client_id>
    CLIENT_SECRET=<Enter_your_client_secret>
    AUTHORITY=<Enter_your_authority_url>
    
    • Задайте значение CLIENT_ID идентификатора приложения (клиента) для зарегистрированного приложения, доступного на странице обзора.
    • Задайте значение секрета клиента, созданного CLIENT_SECRET в сертификатах и секретах для зарегистрированного приложения.
    • Задайте для параметра AUTHORITYhttps://login.microsoftonline.com/<TENANT_GUID>значение . Идентификатор каталога (клиента) доступен на странице обзора регистрации приложения.

    Переменные среды ссылаются в app_config.py и хранятся в отдельном env-файле, чтобы сохранить их вне системы управления версиями. Предоставленный файл gitignore предотвращает проверка в файле ENV.

Шаг 6. Запуск примера приложения

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

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

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

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

  5. Выполните действия и введите необходимые сведения для входа с помощью учетной записи Майкрософт. Вам предлагается указать адрес электронной почты и пароль для входа.

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

Схема, показывая пример приложения, запрашивающего согласие на доступ к необходимым разрешениям.

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

Схема, показывающая, как пример приложения успешно вошел в систему пользователя.

Принцип работы

На следующей схеме показано, как работает пример приложения:

Схема: работа примера приложения, созданного при работе с этим кратким руководством.

  1. Приложение использует identity пакет для получения маркера доступа из платформа удостоверений Майкрософт. Этот пакет основан на библиотеке проверки подлинности Майкрософт (MSAL) для Python для упрощения проверки подлинности и авторизации в веб-приложениях.

  2. Маркер доступа, получаемый на предыдущем шаге, используется в качестве маркера носителя для проверки подлинности пользователя при вызове API Microsoft Graph.

Следующие шаги

Узнайте больше, создав веб-приложение Python, которое входит в систему пользователей и вызывает защищенный веб-API в следующей серии руководств по нескольким частьм: