Добавление входа с помощью учетной записи Microsoft Entra в веб-приложение Spring

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

Screenshot of application 'Sign in' dialog.

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

Чтобы выполнить действия, описанные в этой статье, необходимо следующее:

Внимание

Для выполнения действий, описанных в этой статье, требуется spring Boot версии 2.5 или более поздней.

Создание приложения с помощью Spring Initializr

  1. Перейдите в https://start.spring.io/.

  2. Укажите, что требуется создать проект Maven на Java, введите имя группы и артефакта для приложения.

  3. Добавление зависимостей для Spring Web, идентификатора Microsoft Entra и клиента OAuth2.

  4. Внизу страницы нажмите кнопку GENERATE (Создать).

    Screenshot of Spring Initializr with basic options.

  5. При появлении запроса скачайте проект на локальный компьютер.

Создание экземпляра Microsoft Entra

Создание экземпляра Active Directory

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

  1. Войдите на сайт https://portal.azure.com.

  2. Выберите все службы, а затем идентификатор Microsoft Entra.

  3. Укажите имя организации и первоначальное доменное имя. Скопируйте полный URL-адрес своего каталога. Этот URL понадобится позже в этом учебнике для добавления учетных записей пользователя. (Например, azuresampledirectory.onmicrosoft.com.)

    Скопируйте полный URL-адрес своего каталога. Этот URL понадобится позже в этом учебнике для добавления учетных записей пользователя. (Пример: azuresampledirectory.onmicrosoft.com.)

    Когда будете готовы, выберите Создать. Создание ресурса займет несколько минут.

    Screenshot of the Configuration section of the Microsoft Entra ID 'Create a tenant' screen.

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

    Screenshot of 'Create a tenant' success message.

  5. Скопируйте идентификатор клиента. Значение идентификатора понадобится для настройки файла application.properties далее в этом учебнике.

    Screenshot of Microsoft Entra tenant screen with 'Tenant ID' highlighted.

Регистрация приложения для приложения Spring Boot

  1. В меню на портале выберите Регистрация приложений, а затем — Зарегистрировать приложение.

  2. Выберите свое приложение и щелкните Зарегистрировать.

  3. Когда откроется страница регистрации приложения, скопируйте свой ИД приложения (клиента) и ИД каталога (арендатора). Эти значения будут использоваться для настройки файла application.properties далее в этом учебнике.

    Screenshot of application with 'Application (client) ID' and 'Directory (tenant) ID' highlighted.

  4. В области навигации слева щелкните Сертификаты и секреты. Затем выберите Создать секрет клиента.

    Screenshot of application 'Certificates & secrets' screen with 'New client secret' highlighted.

  5. Добавьте описание и выберите нужное значение в списке Срок действия. Выберите Добавить. Значение ключа заполнится автоматически.

  6. Скопируйте и сохраните секрет ключа. Это значение понадобится при настройке файла application.properties, как описывается далее в этом руководстве. (Вы не сможете получить это значение позже.)

    Screenshot of application with new client secret highlighted.

  7. На главной странице регистрации приложения выберите Проверка подлинности и щелкните Добавить платформу. Затем выберите Веб-приложения.

    Screenshot of application Authentication screen with 'Configure platforms' section showing and Web platform highlighted.

  8. Введите http://localhost:8080/login/oauth2/code/ в качестве нового URI перенаправления, а затем щелкните Настроить.

    Screenshot of application Authentication screen with 'Configure Web' section showing and 'Redirect URIs' highlighted.

  9. Если вы изменили файл pom.xml, чтобы использовать начальную версию Microsoft Entra более ранней, чем 3.0.0: в разделе "Неявное предоставление и гибридные потоки", выберите маркеры идентификатора (используемые для неявных и гибридных потоков) и нажмите кнопку "Сохранить".

    Screenshot of application Authentication screen with 'ID tokens' selected.

Добавление учетной записи пользователя в каталог и в роль приложения

  1. На странице Обзор своего экземпляра службы Active Directory щелкните Пользователи и Новый пользователь.

  2. Когда появится область Пользователь, введите значения в поля Имя пользователя и Имя. Затем выберите Создать.

    Screenshot of 'New user' dialog.

    Примечание.

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

    test-user@azuresampledirectory.onmicrosoft.com

  3. На главной странице регистрации приложения выберите элемент Роли приложения, а затем — команду Create app role (Создать роль приложения). Укажите значения для полей формы, выберите элемент Do you want to enable this app role? (Включить эту роль приложения?) и нажмите кнопку Применить.

    Screenshot of application 'App roles' screen with 'Create app role' pane showing.

  4. На странице обзора каталога Microsoft Entra выберите корпоративные приложения.

    Screenshot of Microsoft Entra ID 'Enterprise applications' screen.

  5. Выберите элемент Все приложения, а затем выберите приложение, для которого вы добавили роль приложения на предыдущем этапе.

    Screenshot of 'Enterprise applications' screen with 'All applications' list showing.

  6. Последовательно выберите элементы Пользователи и группы и Добавить пользователя или группу.

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

    Screenshot of application 'Add Assignment' screen with Users pane showing.

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

    Screenshot of user with 'Temporary password' field highlighted.

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

  1. Распакуйте архив с файлами проекта, который вы создали и скачали в каталог ранее в рамках этого руководства.

  2. В папке src/main/resources проекта откройте файл application.properties в текстовом редакторе.

  3. Укажите параметры для регистрации приложения, используя созданные ранее значения. Например:

    # Enable related features.
    spring.cloud.azure.active-directory.enabled=true
    # Specifies your Active Directory ID:
    spring.cloud.azure.active-directory.profile.tenant-id=22222222-2222-2222-2222-222222222222
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=11111111-1111-1111-1111-1111111111111111
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=AbCdEfGhIjKlMnOpQrStUvWxYz==
    

    Где:

    Параметр Описание
    spring.cloud.azure.active-directory.enabled Включение функций, предоставляемых spring-cloud-azure-starter-active-directory
    spring.cloud.azure.active-directory.profile.tenant-id Содержит идентификатор каталога Active Directory, который вы скопировали ранее.
    spring.cloud.azure.active-directory.credential.client-id Содержит идентификатор приложения, полученный после регистрации приложения.
    spring.cloud.azure.active-directory.credential.client-secret Содержит значение ключа, полученное после регистрации приложения.
  4. Сохраните и закройте файл application.properties.

  5. Создайте папку с именем controller в исходной папке Java для приложения. Пример: src/main/java/com/wingtiptoys/security/controller.

  6. Создайте файл Java с именем HelloController.java в папке controller и откройте его в текстовом редакторе.

  7. Вставьте следующий код, а затем сохраните и закройте файл:

    package com.wingtiptoys.security;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.security.access.prepost.PreAuthorize;
    
    @RestController
    public class HelloController {
         @GetMapping("Admin")
         @ResponseBody
         @PreAuthorize("hasAuthority('APPROLE_Admin')")
         public String Admin() {
             return "Admin message";
         }
    }
    

Создание и тестирование приложения

  1. Откройте командную строку и перейдите из каталога в папку с файлом pom.xml.

  2. Создайте приложение Spring Boot с помощью Maven и запустите его. Например:

    mvn clean package
    mvn spring-boot:run
    

    Screenshot of Maven build output.

  3. После сборки и запуска приложения в Maven откройте в веб-браузере адрес http://localhost:8080/Admin. Должен появиться запрос на ввод имени пользователя и пароля.

    Screenshot of application 'Sign in' dialog.

    Примечание.

    Если это первый вход с новой учетной записью пользователя, возможно, вам будет предложено изменить пароль.

    Screenshot of application 'Update your password' dialog.

  4. После входа в приложение вы увидите пример адресованного администратору сообщения контроллера.

    Screenshot of application admin message.

Итоги

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

См. также

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

Дополнительные сведения о Spring и Azure см. в центре документации об использовании Spring в Azure.