Защита приложений Java Spring Boot с помощью ролей и утверждений ролей
В этой статье показано веб-приложение Java Spring Boot, использующее клиентская библиотека Microsoft Entra ID Spring Boot Starter для Java для проверки подлинности, авторизации и получения маркеров. Приложение использует протокол OpenID Connect для входа пользователей и ограничивает доступ к некоторым маршрутам с помощью ролей приложений идентификатора Microsoft Entra (роли приложения) для авторизации.
Роли приложений, а также группы безопасности, являются популярными средствами для реализации авторизации. Используя управление доступом на основе ролей (RBAC) с ролями приложений и утверждениями ролей, вы можете безопасно применять политики авторизации с минимальными усилиями. Другим подходом является использование групп идентификаторов Microsoft Entra и утверждений групп. Группы идентификаторов и роли приложений Microsoft Entra не являются взаимоисключающими. Их можно использовать для точного управления доступом.
Видео, которое охватывает аналогичный сценарий, см. в статье "Реализация авторизации в приложениях с помощью ролей приложений, групп безопасности, областей и ролей каталога".
Дополнительные сведения о том, как работают протоколы в этом сценарии и других сценариях, см. в статье "Проверка подлинности и авторизация".
На следующей схеме показана топология приложения:
Приложение использует клиентская библиотека Microsoft Entra ID Spring Boot Starter для Java для входа пользователя и получения маркера идентификатора из идентификатора Microsoft Entra ID. Маркер идентификатора содержит утверждение ролей. Приложение проверяет значение этого утверждения, чтобы определить, какие страницы пользователь авторизован для доступа.
Такая авторизация реализуется с помощью RBAC. С помощью RBAC администратор предоставляет разрешения ролям, а не отдельным пользователям или группам. Затем администратор может назначать роли разным пользователям и группам для управления доступом к определенному содержимому и функциям.
В этом примере приложения определены следующие две роли приложения:
PrivilegedAdmin
: авторизован для доступа только к администраторам и страницам обычных пользователей.RegularUser
: авторизовано для доступа к странице "Обычные пользователи ".
Эти роли приложения определяются на портале Azure в манифесте регистрации приложения. Когда пользователь входит в приложение, идентификатор Microsoft Entra выдает утверждение ролей для каждой роли, предоставленной отдельно пользователю в виде членства в роли.
Вы можете назначить пользователей и группы ролям с помощью портал Azure или программно с помощью Microsoft Graph и Microsoft Azure AD PowerShell. В этой статье описаны оба метода.
Примечание.
Утверждения роли не присутствуют для гостевых пользователей в клиенте, если https://login.microsoftonline.com/common/
конечная точка используется в качестве центра входа пользователей. Необходимо войти пользователя в клиентную конечную точку, например https://login.microsoftonline.com/tenantid
.
Необходимые компоненты
- JDK версии 15. Этот пример был разработан в системе с Java 15, но он может быть совместим с другими версиями.
- Maven 3
- Пакет расширений Java для Visual Studio Code рекомендуется запустить этот пример в Visual Studio Code.
- Клиент идентификатора Microsoft Entra. Дополнительные сведения см. в разделе "Как получить клиент идентификатора Microsoft Entra".
- Учетная запись пользователя в клиенте Идентификатора Microsoft Entra. Этот пример не работает с личной учетной записью Майкрософт. Таким образом, если вы вошли в портал Azure с помощью личная учетная запись и у вас нет учетной записи пользователя в каталоге, необходимо создать ее сейчас.
- Visual Studio Code
- Инструменты Azure для Visual Studio Code
Рекомендации
- Некоторые знания о Spring Framework
- Некоторые знания о терминале Linux или OSX или Windows PowerShell
- jwt.ms для проверки маркеров.
- Fiddler для мониторинга активности сети и устранения неполадок.
- Следуйте блогу по идентификатору Microsoft Entra ID, чтобы оставаться в курсе последних разработок.
Настройка примера
В следующих разделах показано, как настроить пример приложения.
Клонирование или скачивание примера репозитория
Чтобы клонировать пример, откройте окно Bash и выполните следующую команду:
git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 4-spring-web-app/3-Authorization-II/roles
Кроме того, перейдите к репозиторию ms-identity-msal-java-samples , а затем скачайте его в виде файла .zip и извлеките его на жесткий диск.
Внимание
Чтобы избежать ограничений длины пути к файлам в Windows, клонируйте или извлеките репозиторий в каталог рядом с корнем жесткого диска.
Регистрация примера приложения в клиенте Идентификатора Microsoft Entra
В этом примере есть один проект. В следующих разделах показано, как зарегистрировать приложение с помощью портал Azure.
Выберите клиент Идентификатора Microsoft Entra, в котором вы хотите создать приложения
Чтобы выбрать клиент, выполните следующие действия.
Войдите на портал Azure.
Если ваша учетная запись присутствует в нескольких клиентах идентификатора Microsoft Entra ID, выберите профиль в углу портал Azure, а затем выберите "Переключить каталог", чтобы изменить сеанс на нужный клиент Идентификатора Microsoft Entra.
Регистрация приложения (java-spring-webapp-role)
Чтобы зарегистрировать приложение, выполните следующие действия.
Перейдите к портал Azure и выберите идентификатор Microsoft Entra.
Выберите "Регистрация приложений" на панели навигации и выберите "Создать регистрацию".
На появившемся экране "Регистрация приложения" введите следующие сведения о регистрации приложения:
- В разделе "Имя" введите понятное имя приложения для отображения пользователям приложения, например
java-spring-webapp-roles
. - В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации.
- В разделе URI перенаправления (необязательно) выберите веб-файл в поле со списком и введите следующий URI перенаправления:
http://localhost:8080/login/oauth2/code/
- В разделе "Имя" введите понятное имя приложения для отображения пользователям приложения, например
Выберите Зарегистрировать, чтобы создать приложение.
На странице регистрации приложения найдите и скопируйте значение идентификатора приложения (клиента), которое будет использоваться позже. Это значение используется в файле конфигурации или файлах приложения.
На странице регистрации приложения выберите сертификаты и секреты на панели навигации, чтобы открыть страницу, где можно создать секреты и отправить сертификаты.
В разделе Секреты клиента выберите Создать секрет клиента.
Введите описание, например секрет приложения.
Выберите одну из доступных продолжительности: в течение 1 года, за 2 года или никогда не истекает.
Выберите Добавить. Отображается созданное значение.
Скопируйте и сохраните созданное значение для использования в последующих шагах. Это значение требуется для файлов конфигурации кода. Это значение не отображается снова, и его нельзя получить другими средствами. Таким образом, не забудьте сохранить его из портал Azure перед переходом на любой другой экран или область.
Определение ролей приложения
Чтобы определить роли приложения, выполните следующие действия.
По-прежнему на той же регистрации приложения выберите роли приложений на панели навигации.
Выберите " Создать роль приложения", а затем введите следующие значения:
- Для отображаемого имени введите подходящее имя, например PrivilegedAdmin.
- Для типов разрешенных элементов выберите "Пользователь".
- Для параметра Value введите PrivilegedAdmin.
- В поле "Описание" введите PrivilegedAdmins, который может просмотреть страницу администрирования.
Выберите " Создать роль приложения", а затем введите следующие значения:
- В поле Отображаемое имя введите подходящее имя, например RegularUser.
- Для типов разрешенных элементов выберите "Пользователь".
- Для параметра Value введите RegularUser.
- В поле "Описание" введите RegularUsers, которые могут просматривать страницу пользователя.
Щелкните Применить, чтобы сохранить изменения.
Назначение пользователей ролям приложений
Чтобы добавить пользователей в роль приложения, определенную ранее, следуйте инструкциям ниже. Назначьте пользователей и группы ролям.
Настройка приложения (java-spring-webapp-role) для использования регистрации приложения
Чтобы настроить приложение, выполните следующие действия.
Примечание.
В следующих шагах ClientID
выполняется то же самое, что Application ID
и AppId
.
Откройте проект в интегрированной среде разработки.
Откройте файл src\main\resources\application.yml.
Найдите заполнитель
Enter_Your_Tenant_ID_Here
и замените существующее значение идентификатором клиента Microsoft Entra.Найдите заполнитель
Enter_Your_Client_ID_Here
и замените существующее значение идентификатором приложения илиclientId
java-spring-webapp-roles
приложением, скопированным из портал Azure.Найдите заполнитель
Enter_Your_Client_Secret_Here
и замените существующее значение значением, сохраненным во время создания скопированногоjava-spring-webapp-roles
из портал Azure.Откройте файл src/main/java/com/microsoft/azuresamples/msal4j/msidentityspringbootapplication/Sample.Controller.java.
Найдите ссылки на
PrivilegedAdmin
роли приложения иRegularUser
роли приложения в этом файле. При необходимости измените их, чтобы отразить имена ролей приложения, выбранные на предыдущих шагах.
Запуск примера
В следующих разделах показано, как развернуть пример в Azure Spring Apps.
Необходимые компоненты
Если вы развертываете экземпляр плана Azure Spring Apps Enterprise впервые в целевой подписке, см. раздел "Требования" плана Enterprise в Azure Marketplace.
Подключаемый модуль Maven для Azure Spring Apps. Если Maven не является вашим предпочтительным средством разработки, ознакомьтесь со следующими руководствами, которые используют другие инструменты:
Подготовка проекта Spring
Чтобы подготовить проект, выполните следующие действия.
Чтобы создать проект, используйте следующую команду Maven :
mvn clean package
Запустите пример проекта локально с помощью следующей команды:
mvn spring-boot:run
Настройка подключаемого модуля Maven
Выполните следующую команду в корне проекта, чтобы настроить приложение с помощью подключаемого модуля Maven для Azure Spring Apps:
mvn com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
В следующем списке описаны взаимодействия с командами:
- Вход OAuth2: необходимо авторизовать вход в Azure на основе протокола OAuth2.
- Выберите подписку: выберите номер списка подписок, в котором вы хотите создать экземпляр Azure Spring Apps, который по умолчанию соответствует первой подписке в списке. Если вы хотите использовать номер по умолчанию, нажмите клавишу ВВОД.
- Введите имя Azure Spring Apps: введите имя экземпляра spring apps, который вы хотите создать. Если вы хотите использовать имя по умолчанию, нажмите клавишу ВВОД.
- Введите имя группы ресурсов: введите имя группы ресурсов, в которой вы хотите создать экземпляр spring apps. Если вы хотите использовать имя по умолчанию, нажмите клавишу ВВОД.
- Skus: выберите номер SKU, который вы хотите использовать для экземпляра spring apps. Если вы хотите использовать номер по умолчанию, нажмите клавишу ВВОД.
- Введите имя приложения (демонстрация): укажите имя приложения. Если вы хотите использовать идентификатор артефакта проекта по умолчанию, нажмите клавишу ВВОД.
- Среда выполнения. Выберите среду выполнения, которую вы хотите использовать для экземпляра spring apps. В этом случае следует использовать номер по умолчанию, поэтому нажмите клавишу ВВОД.
- Предоставление общедоступного доступа для этого приложения (boot-for-azure): нажмите клавишу y.
- Подтвердите сохранение всех указанных выше конфигураций: нажмите клавишу Y. Если нажать клавишу N, конфигурация не сохраняется в pom-файле .
В следующем примере показаны выходные данные процесса развертывания:
Summary of properties:
Subscription id : 12345678-1234-1234-1234-123456789101
Resource group name : rg-ms-identity-spring-boot-webapp
Azure Spring Apps name : cluster-ms-identity-spring-boot-webapp
Runtime Java version : Java 11
Region : eastus
Sku : Standard
App name : ms-identity-spring-boot-webapp
Public access : true
Instance count/max replicas : 1
CPU count : 1
Memory size(GB) : 2
Confirm to save all the above configurations (Y/n):
[INFO] Configurations are saved to: /home/user/ms-identity-msal-java-samples/4-spring-web-app/1-Authentication/sign-in/pom. xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:57 min
[INFO] Finished at: 2024-02-14T13:50:44Z
[INFO] ------------------------------------------------------------------------
После подтверждения выбора подключаемый модуль добавляет необходимый элемент подключаемого модуля и параметры в файл pom.xml проекта, чтобы настроить приложение для запуска в Azure Spring Apps.
Соответствующая часть файла pom.xml должна выглядеть примерно так:
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-spring-apps-maven-plugin</artifactId>
<version>1.19.0</version>
<configuration>
<subscriptionId>12345678-1234-1234-1234-123456789101</subscriptionId>
<resourceGroup>rg-ms-identity-spring-boot-webapp</resourceGroup>
<clusterName>cluster-ms-identity-spring-boot-webapp</clusterName>
<region>eastus</region>
<sku>Standard</sku>
<appName>ms-identity-spring-boot-webapp</appName>
<isPublic>true</isPublic>
<deployment>
<cpu>1</cpu>
<memoryInGB>2</memoryInGB>
<instanceCount>1</instanceCount>
<runtimeVersion>Java 11</runtimeVersion>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
Конфигурации Azure Spring Apps можно изменить непосредственно в файле pom.xml . Некоторые распространенные конфигурации перечислены в следующей таблице:
Свойство | Обязательное поле | Описание |
---|---|---|
subscriptionId |
false | Идентификатор подписки. |
resourceGroup |
true | Группа ресурсов Azure для экземпляра Azure Spring Apps. |
clusterName |
true | Имя кластера Azure Spring Apps. Если вы используете подписку и группу ресурсов, в которых уже развернут экземпляр Azure Spring Apps, можно также использовать этот существующий кластер для развертывания. |
appName |
true | Имя приложения в Azure Spring Apps. |
region |
false | Регион, в котором размещается экземпляр Azure Spring Apps. Значение по умолчанию — eastus . Допустимые регионы см. в разделе "Поддерживаемые регионы". |
sku |
false | Ценовая категория для экземпляра Azure Spring Apps. Значение по умолчанию — это Basic значение, которое подходит только для сред разработки и тестирования. |
runtime |
false | Конфигурация среды выполнения. Дополнительные сведения см. в разделе Дополнительные сведения о конфигурации. |
deployment |
false | Конфигурация развертывания. Дополнительные сведения см. в разделе Дополнительные сведения о конфигурации. |
Полный список конфигураций см. в справочной документации по подключаемым модулям. Все подключаемые модули Azure Maven используют общий набор конфигураций. Сведения об этих конфигурациях см. в разделе "Общие конфигурации". Сведения о конфигурациях, относящихся к Azure Spring Apps, см. в статье Azure Spring Apps: сведения о конфигурации.
Не забудьте сохранить в стороне clusterName
и appName
значения для последующего использования.
Подготовка приложения к развертыванию
При развертывании приложения в Azure Spring Apps URL-адрес перенаправления изменяется на URL-адрес перенаправления развернутого экземпляра приложения в Azure Spring Apps. Чтобы изменить эти параметры в файле application.yml , выполните следующие действия.
Перейдите к файлу src\main\resources\application.yml приложения и измените значение
post-logout-redirect-uri
доменного имени развернутого приложения, как показано в следующем примере. Например, если вы выбралиcluster-ms-identity-spring-boot-webapp
экземпляр Azure Spring Apps на предыдущем шаге иms-identity-spring-boot-webapp
для имени приложения, необходимо использоватьhttps://cluster-ms-identity-spring-boot-webapp-ms-identity-spring-boot-webapp.azuremicroservices.io
дляpost-logout-redirect-uri
значения.post-logout-redirect-uri: https://<cluster-name>-<app-name>.azuremicroservices.io
После сохранения этого файла используйте следующую команду, чтобы перестроить приложение:
mvn clean package
Внимание
Файл application.yml приложения в настоящее время содержит значение секрета клиента в параметре client-secret
. Не рекомендуется хранить это значение в этом файле. Вы также можете рисковать, если вы зафиксируйте его в репозитории Git.
В качестве дополнительного шага безопасности вы можете сохранить это значение в Azure Key Vault и загрузить секрет из Key Vault , чтобы сделать его доступным в приложении.
Обновление регистрации приложения идентификатора Microsoft Entra
Так как URI перенаправления изменяется в развернутом приложении в Azure Spring Apps, необходимо также изменить URI перенаправления в регистрации приложения Идентификатора Microsoft Entra. Чтобы внести это изменение, выполните следующие действия:
Перейдите на страницу Регистрация приложений Платформы удостоверений Майкрософт для разработчиков.
Используйте поле поиска для поиска регистрации приложения, например
java-servlet-webapp-authentication
.Откройте регистрацию приложения, выбрав его имя.
Выберите Проверка подлинности в меню.
В разделе URI веб-перенаправления - выберите "Добавить URI".
Заполните универсальный код ресурса (URI) приложения, добавляя
/login/oauth2/code/
напримерhttps://<cluster-name>-<app-name>.azuremicroservices.io/login/oauth2/code/
.Выберите Сохранить.
Развертывание приложения
Чтобы развернуть приложение, используйте следующую команду:
mvn azure-spring-apps:deploy
В следующем списке описывается взаимодействие с командой:
- Вход OAuth2: необходимо авторизовать вход в Azure на основе протокола OAuth2.
После выполнения команды можно увидеть в следующих сообщениях журнала, что развертывание выполнено успешно:
[INFO] Deployment(default) is successfully created
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO] InstanceName:demo-default-x-xxxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:UNREGISTERED
[INFO] InstanceName:demo-default-x-xxxxxxxxx-xxxxx Status:Terminating Reason:null DiscoverStatus:UNREGISTERED
[INFO] Getting public url of app(demo)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-demo.azuremicroservices.io
Проверка приложения
После завершения развертывания получите доступ к приложению с URL-адресом выходного приложения. Выполните следующие действия, чтобы проверить журналы приложения, чтобы изучить любую проблему развертывания:
Перейдите по URL-адресу выходного приложения на странице "Выходные данные" раздела "Развертывание".
На странице обзора экземпляра Azure Spring Apps на панели навигации выберите журналы, чтобы проверить журналы приложения.
Анализ примера
Чтобы изучить пример, выполните следующие действия.
- Обратите внимание, что состояние входа или выхода отображается в центре экрана.
- Нажмите кнопку с учетом контекста в углу. Эта кнопка считывает вход при первом запуске приложения. Кроме того, выберите сведения о маркере, только администраторы или обычные пользователи. Так как эти страницы защищены и требуют проверки подлинности, вы автоматически перенаправляетесь на страницу входа.
- На следующей странице следуйте инструкциям и войдите с учетной записью в клиенте идентификатора Microsoft Entra ID.
- На экране согласия обратите внимание на запрашиваемые области.
- После успешного завершения потока входа необходимо перенаправить на домашнюю страницу, в которой отображается состояние входа или одна из других страниц в зависимости от того, какая кнопка активировала поток входа.
- Обратите внимание, что кнопка с учетом контекста теперь говорит выход и отображает имя пользователя.
- Если вы находитесь на домашней странице, выберите "Сведения о маркере идентификатора", чтобы просмотреть некоторые декодированные утверждения маркера идентификатора, включая роли.
- Выберите администраторов только для просмотра
/admin_only
. Только пользователи с рольюPrivilegedAdmin
приложения могут просматривать эту страницу. В противном случае отображается сообщение об ошибке авторизации. - Выберите "Обычные пользователи", чтобы просмотреть страницу
/regular_user
. Только пользователи с рольюRegularUser
приложения илиPrivilegedAdmin
могут просматривать эту страницу. В противном случае отображается сообщение об ошибке авторизации. - Нажмите кнопку в углу, чтобы выйти из нее. Страница состояния отражает новое состояние.
Примечания о коде
В этом примере показано, как использовать клиентская библиотека Microsoft Entra ID Spring Boot Starter для Java для входа пользователей в клиент Идентификатора Microsoft Entra ID. В этом примере также используются начальные серверы клиента Spring Oauth2 и Spring Web. В примере используются утверждения из маркера идентификатора, полученного от идентификатора Microsoft Entra, для отображения сведений о входе пользователя и ограничения доступа к некоторым страницам с помощью утверждения ролей для авторизации.
Содержимое
В следующей таблице показано содержимое папки примера проекта:
Файл или папка | Description |
---|---|
pom.xml | Зависимости приложений. |
src/main/resources/templates/ | Шаблоны Thymeleaf для пользовательского интерфейса. |
src/main/resources/application.yml | Конфигурация начальной библиотеки начального начального файла приложения и идентификатора Microsoft Entra. |
src/main/java/com/microsoft/azuresamples/msal4j/msidentityspringbootwebapp/ | Этот каталог содержит основные классы входа приложения, контроллера и конфигурации. |
.../MsIdentitySpringBootWebappApplication.java | Основной класс. |
.../SampleController.java | Контроллер с сопоставлениями конечных точек. |
.../SecurityConfig.java | Конфигурация безопасности— например, маршруты, для которых требуется проверка подлинности. |
.../Utilities.java | Класс служебной программы— например, утверждения маркера идентификатора фильтра. |
CHANGELOG.md | Список изменений в примере. |
CONTRIBUTING.md | Рекомендации по участию в образце. |
ЛИЦЕНЗИЯ | Лицензия для примера. |
Утверждения маркера идентификатора
Чтобы извлечь сведения о маркере, приложение использует объект Spring Security AuthenticationPrincipal
и OidcUser
объект в сопоставлении запросов, как показано в следующем примере. Полные сведения об использовании утверждений маркера идентификатора см. в примере контроллера .
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
//...
@GetMapping(path = "/some_path")
public String tokenDetails(@AuthenticationPrincipal OidcUser principal) {
Map<String, Object> claims = principal.getIdToken().getClaims();
}
Обработка утверждения ролей в маркере идентификатора
Утверждение ролей маркера включает имена ролей, которым назначен пользователь, выполнившего вход, как показано в следующем примере:
{
...
"roles": [
"PrivilegedAdmin",
"RegularUser",]
...
}
Распространенный способ доступа к именам ролей описан в разделе утверждений маркера идентификатора.
Microsoft Entra ID Boot Starter версии 3.3 и более поздних версий также анализирует утверждения ролей автоматически и добавляет каждую роль в вход Authorities
пользователя, префиксируя каждую строку APPROLE_
. Эта конфигурация позволяет разработчикам использовать роли приложения с заметками условия Spring PrePost
с помощью hasAuthority
метода. Например, в SampleController.java можно найти следующие @PreAuthorize
условия:
@GetMapping(path = "/admin_only")
@PreAuthorize("hasAuthority('APPROLE_PrivilegedAdmin')")
public String adminOnly(Model model) {
// restrict to users who have PrivilegedAdmin app role only
}
@GetMapping(path = "/regular_user")
@PreAuthorize("hasAnyAuthority('APPROLE_PrivilegedAdmin','APPROLE_RegularUser')")
public String regularUser(Model model) {
// restrict to users who have any of RegularUser or PrivilegedAdmin app roles
}
Следующий код получает полный список центров для данного пользователя:
@GetMapping(path = "/some_path")
public String tokenDetails(@AuthenticationPrincipal OidcUser principal) {
Collection<? extends GrantedAuthority> authorities = principal.getAuthorities();
}
Ссылки на вход и выход
Для входа приложение отправляет запрос на конечную точку входа в систему Microsoft Entra ID автоматически, настроенную клиентской библиотекой Microsoft Entra ID Spring Boot Starter для Java, как показано в следующем примере:
<a class="btn btn-success" href="/oauth2/authorization/azure">Sign In</a>
Для выхода приложение выполняет запрос POST к logout
конечной точке, как показано в следующем примере:
<form action="#" th:action="@{/logout}" method="post">
<input class="btn btn-warning" type="submit" value="Sign Out" />
</form>
Элементы пользовательского интерфейса, зависящие от проверки подлинности
Приложение имеет простую логику на страницах шаблона пользовательского интерфейса для определения содержимого, отображаемого на основе проверки подлинности пользователя, как показано в следующем примере с помощью тегов Spring Security Thymeleaf:
<div sec:authorize="isAuthenticated()">
this content only shows to authenticated users
</div>
<div sec:authorize="isAnonymous()">
this content only shows to not-authenticated users
</div>
Защита маршрутов с помощью AADWebSecurityConfigurerAdapter
По умолчанию приложение защищает сведения о маркере идентификатора, только администраторы и страницы обычных пользователей , чтобы доступ к ним могли получить только пользователи, выполнившего вход. Приложение настраивает эти маршруты из свойства из app.protect.authenticated
файла application.yml . Чтобы настроить конкретные требования приложения, вы можете расширить AADWebSecurityConfigurationAdapter
один из классов. Пример см. в классе SecurityConfig этого приложения, показанном в следующем коде:
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends AADWebSecurityConfigurerAdapter{
@Value( "${app.protect.authenticated}" )
private String[] protectedRoutes;
@Override
public void configure(HttpSecurity http) throws Exception {
// use required configuration form AADWebSecurityAdapter.configure:
super.configure(http);
// add custom configuration:
http.authorizeRequests()
.antMatchers(protectedRoutes).authenticated() // limit these pages to authenticated users (default: /token_details, /admin_only, /regular_user)
.antMatchers("/**").permitAll(); // allow all other routes.
}
}
Дополнительные сведения
- Документация по платформе удостоверений Майкрософт
- Общие сведения о библиотеке проверки подлинности Майкрософт (MSAL)
- Краткое описание: регистрация приложения на платформе Microsoft Identity
- Краткое руководство. Настройка клиентского приложения для доступа к веб-API
- Общие сведения о согласии приложений с идентификатором Microsoft Entra ID
- Understand user and admin consent (Получение согласия пользователя и администратора)
- Application and service principal objects in Azure Active Directory (Объекты приложения и субъекта-службы в Azure Active Directory)
- Национальные облака
- Примеры кода MSAL
- Клиентская библиотека начальной загрузки Azure Active Directory Spring Boot для Java
- Библиотека проверки подлинности Майкрософт для Java (MSAL4J)
- Вики-сайт MSAL4J
- Маркеры идентификации
- Маркеры доступа на платформе удостоверений Майкрософт
Дополнительные сведения о работе протоколов OAuth 2.0 в этом сценарии и других сценариях см. в сценариях проверки подлинности для идентификатора Microsoft Entra.