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

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

Снимок экрана: диалоговое окно

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

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

Внимание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Снимок экрана: экран приложения

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

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

    Снимок экрана: приложение с выделенным новым секретом клиента.

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

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

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

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

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

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

    Снимок экрана: диалоговое окно

    Примечание.

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

    test-user@azuresampledirectory.onmicrosoft.com

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

    Снимок экрана: экран приложения

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

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

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

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

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

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

  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=<tenant-ID>
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=<client-ID>
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=<client-secret>
    

    Где:

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

    Снимок экрана: диалоговое окно

    Примечание.

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

    Снимок экрана: диалоговое окно

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

    Снимок экрана: сообщение администратора приложения.

Итоги

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

См. также

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

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