Добавление входа с помощью учетной записи Microsoft Entra в веб-приложение Spring
В этой статье показано, как разработать веб-приложение Spring, которое поддерживает вход с помощью учетной записи Microsoft Entra. Завершив все действия, описанные в этой статье, веб-приложение перенаправляется на страницу входа Microsoft Entra при анонимном доступе. На следующем снимке экрана показана страница входа в Microsoft Entra:
Необходимые компоненты
Чтобы выполнить действия, описанные в этой статье, необходимо следующее:
- Поддерживаемая версия Java Development Kit (JDK). Дополнительные сведения о версиях JDK, доступных для разработки в Azure, см. в статье Поддержка Java в Azure и Azure Stack.
- Apache Maven версии 3.0 или более поздней.
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись.
Внимание
Для выполнения действий, описанных в этой статье, требуется spring Boot версии 2.5 или более поздней.
Создание приложения с помощью Spring Initializr
Перейдите в https://start.spring.io/.
Укажите, что требуется создать проект Maven на Java, введите имя группы и артефакта для приложения.
Добавление зависимостей для Spring Web, идентификатора Microsoft Entra и клиента OAuth2.
Внизу страницы нажмите кнопку GENERATE (Создать).
При появлении запроса скачайте проект на локальный компьютер.
Создание экземпляра Microsoft Entra
Создание экземпляра Active Directory
Если вы являетесь администратором существующего экземпляра, этот процесс можно пропустить.
Войдите на сайт https://portal.azure.com.
Выберите все службы, а затем идентификатор Microsoft Entra.
Укажите имя организации и первоначальное доменное имя. Скопируйте полный URL-адрес своего каталога. Этот URL понадобится позже в этом учебнике для добавления учетных записей пользователя. (Например,
azuresampledirectory.onmicrosoft.com
.)Скопируйте полный URL-адрес своего каталога. Этот URL понадобится позже в этом учебнике для добавления учетных записей пользователя. (Пример:
azuresampledirectory.onmicrosoft.com
.)Когда будете готовы, выберите Создать. Создание ресурса займет несколько минут.
По завершении щелкните появившуюся ссылку, чтобы получить доступ к новому каталогу.
Скопируйте идентификатор клиента. Значение идентификатора понадобится для настройки файла application.properties далее в этом учебнике.
Регистрация приложения для приложения Spring Boot
В меню на портале выберите Регистрация приложений, а затем — Зарегистрировать приложение.
Выберите свое приложение и щелкните Зарегистрировать.
Когда откроется страница регистрации приложения, скопируйте свой ИД приложения (клиента) и ИД каталога (арендатора). Эти значения будут использоваться для настройки файла application.properties далее в этом учебнике.
В области навигации слева щелкните Сертификаты и секреты. Затем выберите Создать секрет клиента.
Добавьте описание и выберите нужное значение в списке Срок действия. Выберите Добавить. Значение ключа заполнится автоматически.
Скопируйте и сохраните секрет ключа. Это значение понадобится при настройке файла application.properties, как описывается далее в этом руководстве. (Вы не сможете получить это значение позже.)
На главной странице регистрации приложения выберите Проверка подлинности и щелкните Добавить платформу. Затем выберите Веб-приложения.
Введите http://localhost:8080/login/oauth2/code/ в качестве нового URI перенаправления, а затем щелкните Настроить.
Если вы изменили файл pom.xml, чтобы использовать начальную версию Microsoft Entra более ранней, чем 3.0.0: в разделе "Неявное предоставление и гибридные потоки", выберите маркеры идентификатора (используемые для неявных и гибридных потоков) и нажмите кнопку "Сохранить".
Добавление учетной записи пользователя в каталог и в роль приложения
На странице Обзор своего экземпляра службы Active Directory щелкните Пользователи и Новый пользователь.
Когда появится область Пользователь, введите значения в поля Имя пользователя и Имя. Затем выберите Создать.
Примечание.
При вводе имени пользователя укажите URL-адрес каталога, полученный ранее в этом учебнике. Например:
test-user@azuresampledirectory.onmicrosoft.com
На главной странице регистрации приложения выберите элемент Роли приложения, а затем — команду Create app role (Создать роль приложения). Укажите значения для полей формы, выберите элемент Do you want to enable this app role? (Включить эту роль приложения?) и нажмите кнопку Применить.
На странице обзора каталога Microsoft Entra выберите корпоративные приложения.
Выберите элемент Все приложения, а затем выберите приложение, для которого вы добавили роль приложения на предыдущем этапе.
Последовательно выберите элементы Пользователи и группы и Добавить пользователя или группу.
В меню Пользователи нажмите Не выбрано. Выберите пользователя, учетная запись которого была создана ранее, щелкните Выбрать, а затем — Назначить. Если ранее вы создали более одной роли приложения, выберите нужную роль.
Вернитесь к панели Пользователи, выберите своего тестового пользователя, затем нажмите Сбросить пароль и скопируйте пароль. Пароль понадобится для входа в приложение далее в этом учебнике.
Настройка и компиляция приложения
Распакуйте архив с файлами проекта, который вы создали и скачали в каталог ранее в рамках этого руководства.
В папке src/main/resources проекта откройте файл application.properties в текстовом редакторе.
Укажите параметры для регистрации приложения, используя созданные ранее значения. Например:
# 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
Содержит значение ключа, полученное после регистрации приложения. Сохраните и закройте файл application.properties.
Создайте папку с именем controller в исходной папке Java для приложения. Пример: src/main/java/com/wingtiptoys/security/controller.
Создайте файл Java с именем HelloController.java в папке controller и откройте его в текстовом редакторе.
Вставьте следующий код, а затем сохраните и закройте файл:
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"; } }
Создание и тестирование приложения
Откройте командную строку и перейдите из каталога в папку с файлом pom.xml.
Создайте приложение Spring Boot с помощью Maven и запустите его. Например:
mvn clean package mvn spring-boot:run
После сборки и запуска приложения в Maven откройте в веб-браузере адрес
http://localhost:8080/Admin
. Должен появиться запрос на ввод имени пользователя и пароля.Примечание.
Если это первый вход с новой учетной записью пользователя, возможно, вам будет предложено изменить пароль.
После входа в приложение вы увидите пример адресованного администратору сообщения контроллера.
Итоги
В этом руководстве вы создали веб-приложение Java с помощью начального средства Microsoft Entra, настроили новый клиент Microsoft Entra, зарегистрировали новое приложение в клиенте, а затем настроили приложение для использования заметок Spring и классов для защиты веб-приложения.
См. также
- Дополнительные сведения о новых параметрах пользовательского интерфейса см. в учебном руководстве по регистрации новых приложений на портале Azure.
Следующие шаги
Дополнительные сведения о Spring и Azure см. в центре документации об использовании Spring в Azure.