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


Вход пользователей в пример веб-приложения Python Django

В этом руководстве вы изучите веб-приложение Python Django, защищенное Внешняя идентификация Microsoft Entra. В этом примере показано, как выполнить вход для клиентов, выполняющих проверку подлинности в веб-приложении Python Django. Пример веб-приложения использует библиотеку проверки подлинности Майкрософт для Python (MSAL Python) для обработки проверки подлинности пользователей.

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

Регистрация веб-приложения

Чтобы приложение входить в систему с помощью Microsoft Entra, Внешняя идентификация Microsoft Entra должны быть осведомлены о создаваемом приложении. Регистрация приложения устанавливает отношение доверия между приложением и Microsoft Entra. При регистрации приложения внешний идентификатор создает уникальный идентификатор, известный как идентификатор приложения (клиента), значение, используемое для идентификации приложения при создании запросов проверки подлинности.

Ниже показано, как зарегистрировать приложение в Центре администрирования Microsoft Entra:

  1. Войдите в Центр администрирования Microsoft Entra как минимум разработчик приложений.

  2. Если у вас есть доступ к нескольким клиентам, используйте значок Параметры в верхнем меню, чтобы переключиться на внешний клиент из меню каталогов и подписок.

  3. Перейдите к приложениям> удостоверений>Регистрация приложений.

  4. Выберите + Создать регистрацию.

  5. На отображаемой странице регистрации приложения;

    1. Введите понятное имя приложения, отображаемое пользователям приложения, например ciam-client-app.
    2. В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации.
  6. Выберите Зарегистрировать.

  7. Панель обзора приложения отображается при успешной регистрации. Запишите идентификатор приложения (клиента), который будет использоваться в исходном коде приложения.

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

  1. В разделе "Управление" выберите "Проверка подлинности"
  2. На странице конфигураций платформы выберите "Добавить платформу" и выберите "Веб-параметр".
  3. Введите http://localhost:5000/redirectURI перенаправления. Этот URI перенаправления — это расположение, в котором сервер авторизации отправляет маркер доступа. Его можно настроить в соответствии с вариантом использования.
  4. Нажмите кнопку "Настроить", чтобы сохранить изменения.

Добавление секрета клиента приложения

Создайте секрет клиента для зарегистрированного приложения. Приложение использует секрет клиента, чтобы подтвердить свое удостоверение при запросе маркеров.

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

  2. В разделе Управление выберите Разрешения API. В списке настроенных разрешений приложение было назначено разрешение User.Read . Однако, поскольку клиент является внешним клиентом, пользователи-потребители сами не могут согласиться с этим разрешением. Вы, как администратор, должны предоставить это разрешение от имени всех пользователей в клиенте:

    1. Выберите "Предоставить согласие администратора" для <имени> клиента, а затем нажмите кнопку "Да".
    2. Выберите "Обновить", а затем убедитесь, что имя> клиента предоставлено в разделе "Состояние" <для обоих область.

Создание потока пользователей

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

  1. Войдите в Центр администрирования Microsoft Entra как минимум внешний поток пользователя id Администратор istrator.

  2. Если у вас есть доступ к нескольким клиентам, используйте значок Параметры в верхнем меню, чтобы переключиться на внешний клиент из меню каталогов и подписок.

  3. Перейдите к потокам пользователей внешних>удостоверений удостоверений>.

  4. Выберите +Создать поток пользователя.

  5. На странице создания:

    1. Введите имя потока пользователя, например SignInSignUpSample.

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

      Примечание.

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

    3. В разделе "Учетные записи электронной почты" можно выбрать один из двух вариантов. В этом руководстве выберите "Электронная почта с паролем".

      • Электронная почта с паролем: позволяет новым пользователям регистрироваться и входить в систему с помощью адреса электронной почты в качестве имени входа и пароля в качестве их первых учетных данных фактора.
      • Одноразовый секретный код электронной почты: позволяет новым пользователям регистрироваться и выполнять вход с помощью адреса электронной почты в качестве имени входа и однократного секретного кода электронной почты в качестве учетных данных первого фактора. Одноразовый секретный код электронной почты должен быть включен на уровне клиента (единый секретный код всех поставщиков>удостоверений), чтобы этот параметр был доступен на уровне потока пользователя.
    4. В разделе "Атрибуты пользователя" выберите атрибуты, которые необходимо собрать от пользователя при регистрации. Выбрав "Показать больше", можно выбрать атрибуты и утверждения для страны или региона, отображаемого имени и почтового индекса. Нажмите ОК. (Пользователи запрашивают атрибуты только при первом регистрации.)

  6. Нажмите кнопку создания. Новый поток пользователя появится в списке Потоки пользователей. Если потребуется, обновите страницу.

Чтобы включить самостоятельный сброс пароля, выполните действия, описанные в статье "Включение самостоятельного сброса пароля".

Связывание веб-приложения с потоком пользователя

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

  1. В меню боковой панели выберите "Удостоверение".

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

  3. На странице "Потоки пользователей" выберите имя потока пользователя, созданное ранее, например SignInSignUpSample.

  4. В разделе "Использование" выберите "Приложения".

  5. Выберите Добавить приложение.

  6. Выберите приложение из списка, например ciam-client-app или используйте поле поиска для поиска приложения, а затем выберите его.

  7. Выберите Выбрать.

Клонирование или скачивание примера веб-приложения

Чтобы получить пример приложения, можно клонировать его из GitHub или скачать его в виде файла .zip.

  • Чтобы клонировать пример, откройте командную строку и перейдите к месту создания проекта и введите следующую команду:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-python.git
    
  • Скачайте файл .zip. Извлеките его в путь к файлу, где длина имени меньше 260 символов.

Установка зависимостей проекта

  1. Откройте окно консоли и перейдите в каталог, содержащий пример веб-приложения Flask:

    cd django-web-app
    
  2. Настройка виртуальной среды

    py -m venv .venv
    .venv\scripts\activate
    
  3. Для установки зависимостей приложения выполните следующие команды:

    python3 -m pip install -r requirements.txt
    

Настройка примера веб-приложения

  1. Откройте файлы проекта в Visual Studio Code или редакторе, который вы используете.

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

  3. В env-файле укажите следующие переменные среды:

    1. CLIENT_ID идентификатор приложения (клиента) зарегистрированного ранее приложения.
    2. CLIENT_SECRET значение секрета приложения, скопированное ранее.
    3. AUTHORITY — URL-адрес, определяющий центр маркера. Он должен иметь формат https://{subdomain}.ciamlogin.com/{subdomain}.onmicrosoft.com. Замените поддомен каталога (клиента). Например, если основной домен клиента — это contoso.onmicrosoft.com, используйте contoso. Если у вас нет поддомена клиента, узнайте, как считывать сведения о клиенте.
    4. REDIRECT_URI который должен быть похож на URI перенаправления, зарегистрированный ранее, должен соответствовать конфигурации.

Запуск и тестирование примера веб-приложения

Запустите приложение, чтобы просмотреть интерфейс входа во время игры.

Примечание.

В этом примере используется сторонняя библиотека удостоверений Python. Библиотека официально не поддерживается корпорацией Майкрософт, но рекомендуется для использования. Эта библиотека упрощает добавление проверки подлинности в веб-приложение, так как она абстрагирует множество сведений о MSAL Python.

  1. В терминале выполните приведенную ниже команду.

    python manage.py runserver localhost:5000                                             
    

    Вы можете использовать нужный порт. Это должно быть похоже на порт URI перенаправления, зарегистрированного ранее.

  2. Откройте браузер, а затем перейдите в http://localhost:5000раздел . Вы увидите страницу, аналогичную следующему снимку экрана:

    Снимок экрана: страница входа в веб-приложение Django.

  3. После завершения загрузки страницы выберите ссылку "Войти ". Вам будет предложено выполнить вход.

  4. На странице входа введите адрес электронной почты, нажмите кнопку "Далее", введите пароль, а затем нажмите кнопку "Войти". Если у вас нет учетной записи, выберите "Нет учетной записи"? Создайте одну ссылку, которая запускает поток регистрации.

  5. Если выбрать вариант регистрации, вы перейдете по потоку входа uo. Заполните электронную почту, одноразовый секретный код, новый пароль и дополнительные сведения об учетной записи, чтобы завершить весь поток регистрации.

  6. После входа или регистрации вы перенаправляетесь обратно в веб-приложение. Вы увидите страницу, похожую на следующий снимок экрана:

    Снимок экрана: пример веб-приложения flask после успешной проверки подлинности.

  7. Выберите выход из веб-приложения или нажмите кнопку "Вызвать подчиненный API ", чтобы вызвать конечную точку Microsoft Graph.

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

Когда пользователи выбирают ссылку для входа, приложение инициирует запрос проверки подлинности и перенаправляет пользователей на Внешняя идентификация Microsoft Entra. Затем пользователь войдет или регистрирует страницу на отображаемой странице. После предоставления необходимых учетных данных и согласия на необходимые область Внешняя идентификация Microsoft Entra перенаправляет пользователя обратно в веб-приложение с кодом авторизации. Затем веб-приложение использует этот код авторизации для получения маркера из Внешняя идентификация Microsoft Entra.

Когда пользователи выбирают ссылку выхода, приложение очищает сеанс, перенаправляет пользователя на конечную точку выхода из Внешняя идентификация Microsoft Entra, чтобы уведомить пользователя о том, что пользователь вышел из системы. Затем пользователь перенаправляется обратно в веб-приложение.