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

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

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

Необходимые условия

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

Важный

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

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

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

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

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

  4. В нижней части страницы выберите кнопку GENERATE.

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

Добавьте зависимость Microsoft Entra

  1. Извлеките скачанные файлы проекта в каталог на локальном компьютере.

  2. Откройте файлpom.xml в текстовом редакторе.

  3. Добавьте в раздел Azure Законопроект о материалах (BOM) <dependencyManagement> Spring Cloud.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>7.4.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
  4. Добавьте в раздел зависимость <dependencies> Azure Starter Microsoft Entra Spring Cloud.

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-active-directory</artifactId>
    </dependency>
    
  5. Сохраните и закройте файл pom.xml.

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

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

  1. Войдите в https://portal.azure.com.

  2. Выберите все службы, затем Идентичность, и потом Microsoft Entra ID.

  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. Для нового URI перенаправления введитеhttp://localhost:8080/login/oauth2/code/, а затем выберите Настроить.

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

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

  1. На странице "Обзор " клиента Идентификатора Microsoft Entra выберите "Пользователи" и выберите "Новый пользователь".

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

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

    Заметка

    При вводе имени пользователя необходимо указать URL-адрес каталога из предыдущего руководства. Например:

    test-user@azuresampledirectory.onmicrosoft.com

  3. На главной странице регистрации приложения выберите роли приложения и выберите роль приложения. Укажите значения полей формы, выберите " Включить эту роль приложения?", а затем нажмите кнопку "Применить".

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

  4. На странице Обзор каталога Microsoft Entra выберите Enterprise Applications.

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

  6. Выберите "Пользователи и группы", а затем нажмите кнопку "Добавить пользователя или группу".

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

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

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

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

  2. Перейдите в папку src/main/resources в проекте, а затем откройте файл application.properties в текстовом редакторе.

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

    # Enable related features.
    spring.cloud.azure.active-directory.enabled=true
    # Specifies your Microsoft Entra ID tenant 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 Содержит идентификатор клиента вашего клиента Microsoft Entra ID, полученный ранее.
    spring.cloud.azure.active-directory.credential.client-id Содержит идентификатор приложения , полученный при регистрации вашего приложения, выполненной ранее.
    spring.cloud.azure.active-directory.credential.client-secret Содержит значение из регистрационного ключа вашего приложения, который вы заполнили ранее.
  4. Сохраните и закройте файл application.properties.

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

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

  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.