Вход пользователей в пример веб-приложения Python Flask
В этой статье вы изучите веб-приложение Python Flask, защищенное Внешняя идентификация Microsoft Entra. В этом примере показано, как выполнить вход для клиентов, выполняющих проверку подлинности в веб-приложении Python Flask. Пример веб-приложения использует библиотеку проверки подлинности Майкрософт для Python (MSAL Python) для обработки проверки подлинности пользователей.
Необходимые компоненты
- Visual Studio Code или любой другой редактор кода.
- Python 3+.
- Внешний клиент. Чтобы создать его, выберите один из следующих методов:
- (Рекомендуется) Используйте расширение Внешняя идентификация Microsoft Entra для настройки внешнего клиента непосредственно в Visual Studio Code.
- Создайте внешний клиент в Центре администрирования Microsoft Entra.
Регистрация веб-приложения
Чтобы приложение входить в систему с помощью Microsoft Entra, Внешняя идентификация Microsoft Entra должны быть осведомлены о создаваемом приложении. Регистрация приложения устанавливает отношение доверия между приложением и Microsoft Entra. При регистрации приложения внешний идентификатор создает уникальный идентификатор, известный как идентификатор приложения (клиента), значение, используемое для идентификации приложения при создании запросов проверки подлинности.
Ниже показано, как зарегистрировать приложение в Центре администрирования Microsoft Entra:
Войдите в Центр администрирования Microsoft Entra как минимум разработчик приложений.
Если у вас есть доступ к нескольким клиентам, используйте значок параметров в верхнем меню, чтобы переключиться на внешний клиент из меню каталогов и подписок.
Перейдите к приложениям> удостоверений>Регистрация приложений.
Выберите + Создать регистрацию.
На отображаемой странице регистрации приложения;
- Введите понятное имя приложения, отображаемое пользователям приложения, например ciam-client-app.
- В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации.
Выберите Зарегистрировать.
Панель обзора приложения отображается при успешной регистрации. Запишите идентификатор приложения (клиента), который будет использоваться в исходном коде приложения.
Чтобы указать тип приложения для регистрации приложения, выполните следующие действия.
- В разделе "Управление" выберите "Проверка подлинности"
- На странице конфигураций платформы выберите "Добавить платформу" и выберите "Веб-параметр".
- Введите
http://localhost:3000/getAToken
URI перенаправления. Этот URI перенаправления — это расположение, в котором сервер авторизации отправляет маркер доступа. Его можно настроить в соответствии с вариантом использования. - Нажмите кнопку "Настроить", чтобы сохранить изменения.
Добавление секрета клиента приложения
Создайте секрет клиента для зарегистрированного приложения. Приложение использует секрет клиента, чтобы подтвердить свое удостоверение при запросе маркеров.
- На странице Регистрация приложений выберите созданное приложение (например, ciam-client-app), чтобы открыть страницу обзора.
- В разделе Управление выберите Сертификаты и секреты.
- Щелкните Создать секрет клиента.
- В поле "Описание" введите описание секрета клиента (например, секрет клиента приложения ciam).
- В разделе "Срок действия" выберите срок действия, для которого секрет действителен (для правил безопасности организации), а затем нажмите кнопку "Добавить".
- Запишите значение секрета в поле Значение. Это значение будет использовано позже для конфигурации. Значение секрета не будет отображаться снова и не извлекается с помощью каких-либо средств после перехода от сертификатов и секретов. Обязательно запишите его.
Предоставление согласия администратора
После регистрации приложения он получает разрешение User.Read . Однако, поскольку клиент является внешним клиентом, сами пользователи клиента не могут согласиться с этим разрешением. Вы, как администратор, должны предоставить это разрешение от имени всех пользователей в клиенте:
На странице Регистрация приложений выберите созданное приложение (например, ciam-client-app), чтобы открыть страницу обзора.
В разделе Управление выберите Разрешения API.
- Выберите "Предоставить согласие администратора" для <имени> клиента, а затем нажмите кнопку "Да".
- Выберите "Обновить", а затем убедитесь, что <имя> клиента предоставлено в разделе "Состояние" для разрешения.
Создание потока пользователей
Выполните следующие действия, чтобы создать поток пользователя, который может использовать для входа или регистрации в приложении.
Войдите в Центр администрирования Microsoft Entra как минимум администратор потока внешних идентификаторов.
Если у вас есть доступ к нескольким клиентам, используйте значок параметров в верхнем меню, чтобы переключиться на внешний клиент из меню каталогов и подписок.
Перейдите к потокам пользователей внешних>удостоверений удостоверений>.
Выберите +Создать поток пользователя.
На странице создания:
Введите имя потока пользователя, например SignInSignUpSample.
В списке поставщиков удостоверений выберите учетные записи электронной почты. Этот поставщик удостоверений позволяет пользователям входить или регистрироваться с помощью своего адреса электронной почты.
В разделе "Учетные записи электронной почты" можно выбрать один из двух вариантов. В этом руководстве выберите "Электронная почта с паролем".
- Электронная почта с паролем: позволяет новым пользователям регистрироваться и входить в систему с помощью адреса электронной почты в качестве имени входа и пароля в качестве их первых учетных данных фактора.
- Одноразовый секретный код электронной почты: позволяет новым пользователям регистрироваться и выполнять вход с помощью адреса электронной почты в качестве имени входа и однократного секретного кода электронной почты в качестве учетных данных первого фактора. Одноразовый секретный код электронной почты должен быть включен на уровне клиента (единый секретный код всех поставщиков>удостоверений), чтобы этот параметр был доступен на уровне потока пользователя.
В разделе "Атрибуты пользователя" выберите атрибуты, которые необходимо собрать от пользователя при регистрации. Выбрав "Показать больше", можно выбрать атрибуты и утверждения для страны или региона, отображаемого имени и почтового индекса. Нажмите ОК. (Пользователи запрашивают атрибуты только при первом регистрации.)
Нажмите кнопку создания. Новый поток пользователя появится в списке Потоки пользователей. Если потребуется, обновите страницу.
Чтобы включить самостоятельный сброс пароля, выполните действия, описанные в статье "Включение самостоятельного сброса пароля".
Связывание веб-приложения с потоком пользователя
Чтобы пользователи клиента видели возможность регистрации или входа при использовании приложения, необходимо связать приложение с потоком пользователя. Хотя многие приложения могут быть связаны с потоком пользователя, одно приложение может быть связано только с одним потоком пользователя.
В меню боковой панели выберите "Удостоверение".
Выберите внешние удостоверения, а затем потоки пользователей.
На странице "Потоки пользователей" выберите имя потока пользователя, созданное ранее, например SignInSignUpSample.
В разделе "Использование" выберите "Приложения".
Выберите Добавить приложение.
Выберите приложение из списка, например ciam-client-app или используйте поле поиска для поиска приложения, а затем выберите его.
Выберите Выбрать.
Связав приложение с потоком пользователей, вы можете протестировать поток пользователя, имитируя процесс регистрации или входа пользователя с приложением из Центра администрирования Microsoft Entra. Для этого выполните действия, описанные в разделе "Тестирование регистрации и входа в поток пользователя".
Клонирование или скачивание примера веб-приложения
Чтобы получить пример приложения, можно клонировать его из GitHub или скачать его в виде файла .zip.
Чтобы клонировать пример, откройте командную строку и перейдите к месту создания проекта и введите следующую команду:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-python.git
Скачайте файл .zip. Извлеките его в путь к файлу, где длина имени меньше 260 символов.
Установка зависимостей проекта
Откройте окно консоли и перейдите в каталог, содержащий пример веб-приложения Flask:
cd flask-web-app
Настройка виртуальной среды
py -m venv .venv .venv\scripts\activate
Для установки зависимостей приложения выполните следующие команды:
python3 -m pip install -r requirements.txt
Настройка примера веб-приложения
Откройте файлы проекта в Visual Studio Code или редакторе, который вы используете.
Создайте env-файл в корневой папке проекта с помощью файла .env.sample в качестве руководства.
В env-файле укажите следующие переменные среды:
CLIENT_ID
идентификатор приложения (клиента) зарегистрированного ранее приложения.CLIENT_SECRET
значение секрета приложения, скопированное ранее.AUTHORITY
— URL-адрес, определяющий центр маркера. Он должен иметь формат https://{subdomain}.ciamlogin.com/{subdomain}.onmicrosoft.com. Замените поддомен каталога (клиента). Например, если основной домен клиента — этоcontoso.onmicrosoft.com
, используйтеcontoso
. Если у вас нет поддомена клиента, узнайте, как считывать сведения о клиенте.
Убедитесь, что URI перенаправления настроен хорошо. URI перенаправления, зарегистрированный ранее, должен соответствовать конфигурации. Этот пример по умолчанию задает путь
/getAToken
URI перенаправления. Это настроено в файле app_config.py как REDIRECT_PATH.
Запуск и тестирование примера веб-приложения
Запустите приложение, чтобы просмотреть интерфейс входа во время игры.
Примечание.
В этом примере используется сторонняя библиотека удостоверений Python. Библиотека официально не поддерживается корпорацией Майкрософт, но рекомендуется для использования. Эта библиотека упрощает добавление проверки подлинности в веб-приложение, так как она абстрагирует множество сведений о MSAL Python.
В терминале выполните приведенную ниже команду.
python3 -m flask run --debug --host=localhost --port=3000
Вы можете использовать нужный порт. Это должно быть похоже на порт URI перенаправления, зарегистрированного ранее.
Откройте браузер, а затем перейдите в
http://localhost:3000
раздел . Вы увидите страницу, аналогичную следующему снимку экрана:После завершения загрузки страницы выберите ссылку "Войти ". Вам будет предложено выполнить вход.
На странице входа введите адрес электронной почты, нажмите кнопку "Далее", введите пароль, а затем нажмите кнопку "Войти". Если у вас нет учетной записи, выберите "Нет учетной записи"? Создайте одну ссылку, которая запускает поток регистрации.
Если выбрать вариант регистрации, вы перейдете по потоку входа uo. Заполните электронную почту, одноразовый секретный код, новый пароль и дополнительные сведения об учетной записи, чтобы завершить весь поток регистрации.
После входа или регистрации вы перенаправляетесь обратно в веб-приложение. Вы увидите страницу, похожую на следующий снимок экрана:
Выберите выход из веб-приложения или нажмите кнопку "Вызвать подчиненный API ", чтобы вызвать конечную точку Microsoft Graph.
Принцип работы
Когда пользователи выбирают ссылку для входа, приложение инициирует запрос проверки подлинности и перенаправляет пользователей на Внешняя идентификация Microsoft Entra. Затем пользователь войдет или регистрирует страницу на отображаемой странице. После предоставления необходимых учетных данных и согласия на необходимые области Внешняя идентификация Microsoft Entra перенаправляет пользователя обратно в веб-приложение с кодом авторизации. Затем веб-приложение использует этот код авторизации для получения маркера из Внешняя идентификация Microsoft Entra.
Когда пользователи выбирают ссылку выхода, приложение очищает сеанс, перенаправляет пользователя на конечную точку выхода из Внешняя идентификация Microsoft Entra, чтобы уведомить пользователя о том, что пользователь вышел из системы. Затем пользователь перенаправляется обратно в веб-приложение.