Добавление входа с помощью учетной записи Microsoft Entra в веб-приложение Spring
В этой статье показано, как разработать веб-приложение Spring, которое поддерживает вход учетной записи Microsoft Entra. Завершив все действия, описанные в этой статье, веб-приложение перенаправляется на страницу входа Microsoft Entra при анонимном доступе. На следующем снимке экрана показана страница входа в Microsoft Entra:
Необходимые условия
Для выполнения действий, описанных в этой статье, необходимы следующие предварительные требования:
- Поддерживаемый пакет средств разработки Java (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 ID и клиента OAuth2 .
В нижней части страницы выберите кнопку GENERATE.
При появлении запроса скачайте проект в папку на локальном компьютере.
Создание экземпляра Microsoft Entra
Создание экземпляра Active Directory
Если вы являетесь администратором существующего экземпляра, можно пропустить этот процесс.
Войдите в https://portal.azure.com.
Выберите все службы, затем Идентичность, и потом Microsoft Entra ID.
Введите имя вашей организации и начальное доменное имя . Скопируйте полный URL-адрес каталога. Вы будете использовать URL-адрес для добавления учетных записей пользователей далее в этом руководстве. (Например,
azuresampledirectory.onmicrosoft.com
.)Скопируйте полный URL-адрес каталога. Вы будете использовать URL-адрес для добавления учетных записей пользователей далее в этом руководстве. (Например,
azuresampledirectory.onmicrosoft.com
.).Когда закончите, выберите Создать. Создание нового ресурса займет несколько минут.
По завершении выберите отображаемую ссылку для доступа к новому каталогу.
Скопируйте ИД арендатора . Вы будете использовать значение идентификатора, чтобы настроить файл application.properties далее в этом руководстве.
Добавьте регистрацию для приложения на базе Spring Boot.
В меню портала выберите Регистрация приложений, а затем выберите Зарегистрировать приложение.
Укажите приложение, а затем выберите Зарегистрировать.
Когда появится страница регистрации приложения, скопируйте идентификатор
приложения (клиента) и идентификатор каталога (клиента). Эти значения будут использоваться для настройки файла application.properties далее в этом руководстве. Выберите сертификаты, & секреты, в области навигации. Затем выберите Новый секрет клиента.
Добавьте описание и выберите длительность в списке Истечение срока. Выберите Добавить. Значение ключа будет автоматически заполнено.
Скопируйте и сохраните значение секрета клиента, чтобы настроить файл application.properties далее в этом руководстве. (Вы не сможете получить это значение позже.)
На главной странице регистрации вашего приложения выберите раздел "Аутентификация", затем выберите "Добавить платформу". Затем выберите веб-приложения.
Для нового URI перенаправления введите
http://localhost:8080/login/oauth2/code/
, а затем выберите Настроить.Если вы изменили файл pom.xml для использования начальной версии Microsoft Entra более старой, чем версия 3.0.0: в разделе Неявное предоставление и гибридные потокивыберите токены идентификатора (используемые для неявных и гибридных потоков), а затем выберите Сохранить.
Добавление учетной записи пользователя в каталог и добавление этой учетной записи в appRole
На странице обзора
Active Directory выберите "Пользователи ", а затем выберите"Новый пользователь ".Когда отображается панель пользователя , введите имя пользователя и имя. Затем выберите Создать.
Заметка
При вводе имени пользователя необходимо указать URL-адрес каталога из предыдущего руководства. Например:
test-user@azuresampledirectory.onmicrosoft.com
На главной странице регистрации приложения выберите роли приложений, а затем выберите Создать роль приложения. Укажите значения для полей формы, выберите Включить эту роль приложения?, затем выберите Применить.
На странице Обзор каталога Microsoft Entra выберите Enterprise Applications.
Выберите все приложения, а затем выберите приложение, к которое вы добавили роль приложения на предыдущем шаге.
Выберите Пользователи и группы, а затем выберите Добавить пользователя или группу.
В разделе Пользователивыберите Ничего не выбрано. Выберите пользователя, созданного ранее, выберите Выбрать, а затем выберите Назначить. Если вы создали несколько ролей приложения ранее, выберите роль.
Вернитесь на панель «Пользователи», выберите тестового пользователя, затем выберите «Сброс пароля» и скопируйте пароль. Вы будете использовать пароль при входе в приложение позже в этом руководстве.
Настройка и компиляция приложения
Извлеките файлы из архива проекта, который вы создали и скачали ранее в этом руководстве, в каталог.
Перейдите к папке
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.
Создайте папку с именем контроллера в исходной папке Java для приложения. Например: src/main/java/com/wingtiptoys/security/controller.
Создайте файл Java с именем
HelloController.java в папке контроллераи откройте его в текстовом редакторе. Введите следующий код, а затем сохраните и закройте файл:
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.