Handleiding voor Ontwikkelaars van Spring Boot Starter voor Microsoft Entra
Dit artikel is van toepassing op:✅ versie 4.19.0 ✅ versie 5.19.0
In dit artikel worden de functies en kernscenario's van de Spring Boot Starter voor Microsoft Entra-id beschreven. Het artikel bevat ook richtlijnen voor veelvoorkomende problemen, tijdelijke oplossingen en diagnostische stappen.
Wanneer u een webtoepassing bouwt, zijn identiteits- en toegangsbeheer fundamentele onderdelen. Azure biedt een identiteitsservice in de cloud die diepgaande integratie heeft met de rest van het Azure-ecosysteem.
Hoewel Spring Security het eenvoudig maakt om uw Spring-toepassingen te beveiligen, is deze niet afgestemd op een specifieke id-provider. Met de Spring Boot Starter voor Microsoft Entra-id kunt u uw webtoepassing verbinden met een Microsoft Entra-tenant en uw resourceserver beveiligen met Microsoft Entra-id. Het maakt gebruik van het Oauth 2.0-protocol om webtoepassingen en bronservers te beveiligen.
De volgende koppelingen bieden toegang tot het starterspakket, de documentatie en voorbeelden:
Voorwaarden
Als u de instructies in deze handleiding wilt volgen, moet u over de volgende vereisten beschikken:
- Een Azure-abonnement; Als u nog geen Azure-abonnement hebt, kunt u de voordelen van uw MSDN-abonnee activeren of u aanmelden voor een gratis Azure-account.
- Een ondersteunde Java Development Kit (JDK), versie 8 of hoger. Zie Java-ondersteuning op Azure en Azure Stackvoor meer informatie.
- Apache Mavenversie 3.0 of hoger.
- Een toepassing die is geregistreerd bij Microsoft Entra-id. Zie quickstart: Een toepassing registreren bij het Microsoft Identity Platformvoor meer informatie.
Belangrijk
Spring Boot versie 2.5 of hoger is vereist om de stappen in dit artikel uit te voeren.
Kernscenario's
In deze handleiding wordt beschreven hoe u de Microsoft Entra-starter gebruikt in de volgende scenario's:
- Toegang tot een webapplicatie krijgen
- Toegang tot resourceservers vanuit een webtoepassing
- Beveilig een resourceserver/API
- Toegang tot andere resourceservers vanaf een resourceserver
- webtoepassing en resourceserver in één toepassing
Een -webtoepassing is een webtoepassing waarmee een gebruiker zich kan aanmelden. Een resourceserver accepteert of weigert de toegang na het valideren van een toegangstoken.
Een webtoepassing openen
In dit scenario wordt de OAuth 2.0-autorisatiecode flow gebruikt om een gebruiker in staat te stellen zich aan te melden met een Microsoft-account.
Als u de Microsoft Entra-starter in dit scenario wilt gebruiken, gebruikt u de volgende stappen:
Stel de omleidings-URI in op <application-base-uri>/login/oauth2/code/. Bijvoorbeeld: http://localhost:8080/login/oauth2/code/
. Zorg ervoor dat u de afsluitende /
opneemt. Zie Een omleidings-URI toevoegen in quickstart: Een toepassing registreren bij het Microsoft Identity Platformvoor meer informatie over de omleidings-URI.
Voeg de volgende afhankelijkheden toe aan uw pom.xml-bestand.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-active-directory</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
Notitie
Zie de sectie Aan de slag van de Spring Cloud Azure-ontwikkelaarshandleidingvoor meer informatie over het beheren van Spring Cloud Azure-bibliotheekversies met behulp van een bill of materials (BOM).
Voeg de volgende eigenschappen toe aan uw application.yml-bestand. U kunt de waarden voor deze eigenschappen ophalen uit de app-registratie die u hebt gemaakt in Azure Portal, zoals beschreven in de vereisten.
spring:
cloud:
azure:
active-directory:
enabled: true
profile:
tenant-id: <tenant>
credential:
client-id: <your-client-ID>
client-secret: <your-client-secret>
Notitie
De waarden die zijn toegestaan voor tenant-id
zijn: common
, organizations
, consumers
of de tenant-id. Zie voor meer informatie over deze waarden de sectie Verkeerd eindpunt gebruikt (persoonlijke en organisatieaccounts) van Fout AADSTS50020 - Gebruikersaccount van identiteitsprovider bestaat niet in tenant. Zie App met één tenant converteren naar multitenant op Microsoft Entra IDvoor meer informatie over het converteren van uw app met één tenant.
Gebruik de standaardbeveiligingsconfiguratie of geef uw eigen configuratie op.
Optie 1: Gebruik de standaardconfiguratie.
Met deze optie hoeft u niets te doen. De DefaultAadWebSecurityConfiguration
-klasse wordt automatisch geconfigureerd.
Optie 2: Geef een zelfgedefinieerde configuratie op.
Als u een configuratie wilt opgeven, past u de AadWebApplicationHttpSecurityConfigurer#aadWebApplication
methode toe voor de HttpSecurity
, zoals wordt weergegeven in het volgende voorbeeld:
@Configuration(proxyBeanMethods = false)
@EnableWebSecurity
@EnableMethodSecurity
public class AadOAuth2LoginSecurityConfig {
/**
* Add configuration logic as needed.
*/
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.apply(AadWebApplicationHttpSecurityConfigurer.aadWebApplication())
.and()
.authorizeHttpRequests()
.anyRequest().authenticated();
// Do some custom configuration.
return http.build();
}
}
Toegang tot resource-servers vanuit een webtoepassing
Als u de Microsoft Entra-starter in dit scenario wilt gebruiken, gebruikt u de volgende stappen:
Stel de omleidings-URI in zoals eerder beschreven.
Voeg de volgende afhankelijkheden toe aan uw pom.xml-bestand.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-active-directory</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
Notitie
Zie de sectie Aan de slag van de Spring Cloud Azure-ontwikkelaarshandleidingvoor meer informatie over het beheren van versies van Spring Cloud Azure-bibliotheken met behulp van een stuklijst (BOM).
Voeg de volgende eigenschappen toe aan uw application.yml-bestand, zoals eerder is beschreven:
spring:
cloud:
azure:
active-directory:
enabled: true
profile:
tenant-id: <tenant>
credential:
client-id: <your-client-ID>
client-secret: <your-client-secret>
authorization-clients:
graph:
scopes: https://graph.microsoft.com/Analytics.Read, email
Notitie
De waarden die zijn toegestaan voor tenant-id
zijn: common
, organizations
, consumers
of de tenant-id. Zie voor meer informatie over deze waarden het Het verkeerde eindpunt (persoonlijke en organisatieaccounts) gebruikt sectie van Fout AADSTS50020 - Gebruikersaccount van id-provider bestaat niet in tenant. Zie App met één tenant converteren naar multitenant op Microsoft Entra IDvoor meer informatie over het converteren van uw app met één tenant.
Hier is graph
de naam van uw OAuth2AuthorizedClient
, en scopes
zijn de vereiste scopes voor toestemming bij het inloggen.
Voeg code toe aan uw toepassing, vergelijkbaar met het volgende voorbeeld:
@GetMapping("/graph")
@ResponseBody
public String graph(
@RegisteredOAuth2AuthorizedClient("graph") OAuth2AuthorizedClient graphClient
) {
// toJsonString() is just a demo.
// oAuth2AuthorizedClient contains access_token. We can use this access_token to access the resource server.
return toJsonString(graphClient);
}
Hier is graph
de client-id die in de vorige stap is geconfigureerd.
OAuth2AuthorizedClient
bevat het toegangstoken dat wordt gebruikt voor toegang tot de resourceserver.
Voor een volledig voorbeeld dat laat zien hoe dit scenario werkt, zie spring-cloud-azure-starter-active-directory-voorbeeld: aad-web-application.
Een resourceserver/API beveiligen
Dit scenario biedt geen ondersteuning voor aanmelden, maar beveiligt de server door het toegangstoken te valideren. Als het toegangstoken geldig is, dient de server de aanvraag.
Als u de Microsoft Entra-starter in dit scenario wilt gebruiken, gebruikt u de volgende stappen:
Voeg de volgende afhankelijkheden toe aan uw pom.xml-bestand.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-active-directory</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
Notitie
Zie de sectie Aan de slag van de Spring Cloud Azure-ontwikkelaarshandleidingvoor meer informatie over het beheren van Spring Cloud Azure-bibliotheekversies met behulp van een bill of materials (BOM).
Voeg de volgende eigenschappen toe aan uw application.yml-bestand, zoals eerder is beschreven:
spring:
cloud:
azure:
active-directory:
enabled: true
credential:
client-id: <your-client-ID>
app-id-uri: <your-app-ID-URI>
U kunt zowel de <uw client-id-> als <uw-app-id-URI> waarden gebruiken om het toegangstoken te verifiëren. U kunt de <URI van uw app-id>-waarde ophalen in de Azure portal, zoals wordt weergegeven in de volgende afbeeldingen:
Gebruik de standaardbeveiligingsconfiguratie of geef uw eigen configuratie op.
Optie 1: Gebruik de standaardconfiguratie.
Met deze optie hoeft u niets te doen. De DefaultAadResourceServerConfiguration
-klasse wordt automatisch geconfigureerd.
Optie 2: Geef een zelfgedefinieerde configuratie op.
Als u een configuratie wilt opgeven, past u de AadResourceServerHttpSecurityConfigurer#aadResourceServer
methode toe voor de HttpSecurity
, zoals wordt weergegeven in het volgende voorbeeld:
@Configuration(proxyBeanMethods = false)
@EnableWebSecurity
@EnableMethodSecurity
public class AadOAuth2ResourceServerSecurityConfig {
/**
* Add configuration logic as needed.
*/
@Bean
public SecurityFilterChain apiFilterChain(HttpSecurity http) throws Exception {
http.apply(AadResourceServerHttpSecurityConfigurer.aadResourceServer())
.and()
.authorizeHttpRequests()
.anyRequest().authenticated();
return http.build();
}
}
Voor een volledig voorbeeld waarin dit scenario wordt gedemonstreerd, zie spring-cloud-azure-starter-active-directory-voorbeeld: aad-resource-server.
Toegang tot andere resourceservers vanuit een resourceserver
Dit scenario ondersteunt een resourceserver die andere resourceservers bezoekt.
Als u de Microsoft Entra-starter in dit scenario wilt gebruiken, gebruikt u de volgende stappen:
Voeg de volgende afhankelijkheden toe aan uw pom.xml-bestand.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-active-directory</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
Notitie
Zie de sectie Aan de slag van de Spring Cloud Azure-ontwikkelaarshandleidingvoor meer informatie over het beheren van Spring Cloud Azure-bibliotheekversies met behulp van een bill of materials (BOM).
Voeg de volgende eigenschappen toe aan uw application.yml-bestand:
spring:
cloud:
azure:
active-directory:
enabled: true
profile:
tenant-id: <tenant>
credential:
client-id: <web-API-A-client-ID>
client-secret: <web-API-A-client-secret>
app-id-uri: <web-API-A-app-ID-URI>
authorization-clients:
graph:
scopes:
- https://graph.microsoft.com/User.Read
Notitie
De waarden die zijn toegestaan voor tenant-id
zijn: common
, organizations
, consumers
of de tenant-id. Zie voor meer informatie over deze waarden de sectie over Het verkeerde eindpunt voor persoonlijke en organisatieaccounts gebruikt van Fout AADSTS50020 - Gebruikersaccount van id-provider bestaat niet in tenant. Zie App met één tenant converteren naar multitenant op Microsoft Entra IDvoor meer informatie over het converteren van uw app met één tenant.
Gebruik het kenmerk @RegisteredOAuth2AuthorizedClient
in uw code voor toegang tot de gerelateerde resourceserver, zoals wordt weergegeven in het volgende voorbeeld:
@PreAuthorize("hasAuthority('SCOPE_Obo.Graph.Read')")
@GetMapping("call-graph")
public String callGraph(@RegisteredOAuth2AuthorizedClient("graph") OAuth2AuthorizedClient graph) {
return callMicrosoftGraphMeEndpoint(graph);
}
Voor een volledig voorbeeld waarin dit scenario wordt gedemonstreerd, zie spring-cloud-azure-starter-active-directory-voorbeeld: aad-resource-server-obo.
Webtoepassing en resourceserver in één toepassing
Dit scenario ondersteunt Access een webtoepassing en een resourceserver/API- in één toepassing beveiligen.
Volg deze stappen om aad-starter
in dit scenario te gebruiken:
Voeg de volgende afhankelijkheden toe aan uw pom.xml-bestand.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-active-directory</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
Notitie
Zie de sectie Aan de slag van de Spring Cloud Azure-ontwikkelaarshandleidingvoor meer informatie over het beheren van Spring Cloud Azure-bibliotheekversies met behulp van een bill of materials (BOM).
Werk uw application.yml-bestand bij. Stel de eigenschap spring.cloud.azure.active-directory.application-type
in op web_application_and_resource_server
en geef het autorisatietype voor elke autorisatieclient op, zoals wordt weergegeven in het volgende voorbeeld.
spring:
cloud:
azure:
active-directory:
enabled: true
profile:
tenant-id: <tenant>
credential:
client-id: <Web-API-C-client-id>
client-secret: <Web-API-C-client-secret>
app-id-uri: <Web-API-C-app-id-url>
application-type: web_application_and_resource_server # This is required.
authorization-clients:
graph:
authorizationGrantType: authorization_code # This is required.
scopes:
- https://graph.microsoft.com/User.Read
- https://graph.microsoft.com/Directory.Read.All
Notitie
De waarden die zijn toegestaan voor tenant-id
zijn: common
, organizations
, consumers
of de tenant-id. Zie voor meer informatie over deze waarden de sectie Gebruik van het verkeerde eindpunt (persoonlijke en organisatieaccounts) van Fout AADSTS50020 - Gebruikersaccount van identiteitsprovider bestaat niet in tenant. Zie App met één tenant converteren naar multitenant op Microsoft Entra IDvoor meer informatie over het converteren van uw app met één tenant.
Schrijf Java-code om meerdere HttpSecurity
exemplaren te configureren.
In de volgende voorbeeldcode bevat AadWebApplicationAndResourceServerConfig
twee beveiligingsfilterketenbonen, één voor een resourceserver en één voor een webtoepassing. De apiFilterChain
bean heeft een hoge prioriteit om de beveiligingsbouwer van de resourceserver te configureren. De htmlFilterChain
-bean heeft een lage prioriteit binnen de configuratie van de beveiligingsbouwer voor webapplicaties.
@Configuration(proxyBeanMethods = false)
@EnableWebSecurity
@EnableMethodSecurity
public class AadWebApplicationAndResourceServerConfig {
@Bean
@Order(1)
public SecurityFilterChain apiFilterChain(HttpSecurity http) throws Exception {
http.apply(AadResourceServerHttpSecurityConfigurer.aadResourceServer())
.and()
// All the paths that match `/api/**`(configurable) work as the resource server. Other paths work as the web application.
.securityMatcher("/api/**")
.authorizeHttpRequests()
.anyRequest().authenticated();
return http.build();
}
@Bean
public SecurityFilterChain htmlFilterChain(HttpSecurity http) throws Exception {
// @formatter:off
http.apply(AadWebApplicationHttpSecurityConfigurer.aadWebApplication())
.and()
.authorizeHttpRequests()
.requestMatchers("/login").permitAll()
.anyRequest().authenticated();
// @formatter:on
return http.build();
}
}
Toepassingstype
De eigenschap spring.cloud.azure.active-directory.application-type
is optioneel omdat de waarde ervan kan worden afgeleid door afhankelijkheden. U moet de eigenschap alleen handmatig instellen wanneer u de web_application_and_resource_server
waarde gebruikt.
Heeft afhankelijkheid: spring-security-oauth2-client | Heeft afhankelijkheid: spring-security-oauth2-resource-server | Geldige waarden van het toepassingstype | Standaardwaarde |
---|---|---|---|
Ja | Nee | web_application |
web_application |
Nee | Ja | resource_server |
resource_server |
Ja | Ja |
web_application ,resource_server ,resource_server_with_obo , web_application_and_resource_server |
resource_server_with_obo |
Configureerbare eigenschappen
De Spring Boot Starter voor Microsoft Entra-id biedt de volgende eigenschappen:
Eigenschappen | Beschrijving |
---|---|
spring.cloud.azure.active-directory.app-id-uri | Wordt gebruikt door de resourceserver om de doelgroep in het toegangstoken te valideren. Het toegangstoken is alleen geldig wanneer de doelgroep gelijk is aan de <uw-client-id> of <uw-app-id-URI> waarden die eerder zijn beschreven. |
spring.cloud.azure.active-directory.authorization-clients | Een kaart die de resource-API's configureert die de toepassing gaat bezoeken. Elk item komt overeen met één resource-API die de toepassing gaat bezoeken. In uw Spring-code komt elk item overeen met één OAuth2AuthorizedClient -object. |
spring.cloud.azure.active-directory.authorization-clients.<uw-clientnaam>.scopes | De API-machtigingen van een resourceserver die de toepassing gaat verkrijgen. |
spring.cloud.azure.active-directory.authorization-clients.<uw-clientnaam>.authorization-grant-type | Het type autorisatieclient. Ondersteunde typen zijn authorization_code (standaardtype voor webapp), on_behalf_of (standaardtype voor resource-server), client_credentials. |
spring.cloud.azure.active-directory.application-type | Raadpleeg toepassingstype. |
spring.cloud.azure.active-directory.profile.environment.active-directory-endpoint | De basis-URI voor de autorisatieserver. De standaardwaarde is https://login.microsoftonline.com/ . |
spring.cloud.azure.active-directory.credential.client-id | De geregistreerde toepassings-id in Microsoft Entra ID. |
spring.cloud.azure.active-directory.credential.client-secret | Het clientgeheim van de geregistreerde toepassing. |
spring.cloud.azure.active-directory.user-group.use-transitive-members | Gebruik v1.0/me/transitiveMemberOf om groepen op te halen als deze is ingesteld op waarheid. Gebruik anders /v1.0/me/memberOf . |
spring.cloud.azure.active-directory.post-logout-redirect-uri | De doorverwijs-URI voor het plaatsen van de afmelding. |
spring.cloud.azure.active-directory.profile.tenant-id | De Azure Tenant ID. De waarden die zijn toegestaan voor tenant-id zijn: common , organizations , consumers of de tenant-id. |
spring.cloud.azure.active-directory.user-group.allowed-group-names | De verwachte gebruikersgroepen waaraan een bevoegdheid zal worden verleend als deze wordt gevonden in het antwoord van de MemberOf Graph API-aanroep. |
spring.cloud.azure.active-directory.user-name-attribute | Geeft aan welke claim de naam van de principal is. |
In de volgende voorbeelden ziet u hoe u deze eigenschappen gebruikt:
voorbeeld van eigenschap 1: Als u Azure China 21Vianet- in plaats van Azure Global wilt gebruiken, gebruikt u de volgende stap.
Voeg de volgende eigenschappen toe aan uw application.yml-bestand:
spring: cloud: azure: active-directory: enabled: true profile: environment: active-directory-endpoint: https://login.partner.microsoftonline.cn
Met deze methode kunt u een onafhankelijke of nationale Azure-cloud gebruiken in plaats van de openbare Azure-cloud.
eigenschap 2: Als u een groepsnaam wilt gebruiken om een methode in een webtoepassing te beveiligen, gebruikt u de volgende stappen:
Voeg de volgende eigenschap toe aan uw application.yml-bestand:
spring:
cloud:
azure:
active-directory:
enabled: true
user-group:
allowed-groups: group1, group2
Gebruik de standaardbeveiligingsconfiguratie of geef uw eigen configuratie op.
Optie 1: Gebruik de standaardconfiguratie. Met deze optie hoeft u niets te doen. De DefaultAadWebSecurityConfiguration
-klasse wordt automatisch geconfigureerd.
Optie 2: Geef een zelfgedefinieerde configuratie op. Als u een configuratie wilt opgeven, past u de AadWebApplicationHttpSecurityConfigurer#aadWebApplication
methode toe voor de HttpSecurity
, zoals wordt weergegeven in het volgende voorbeeld:
@Configuration(proxyBeanMethods = false)
@EnableWebSecurity
@EnableMethodSecurity
public class AadOAuth2LoginSecurityConfig {
/**
* Add configuration logic as needed.
*/
@Bean
public SecurityFilterChain htmlFilterChain(HttpSecurity http) throws Exception {
// @formatter:off
http.apply(AadWebApplicationHttpSecurityConfigurer.aadWebApplication())
.and()
.authorizeHttpRequests()
.anyRequest().authenticated();
// @formatter:on
// Do some custom configuration.
return http.build();
}
}
Gebruik de aantekening @PreAuthorize
om de methode te beveiligen, zoals wordt weergegeven in het volgende voorbeeld:
@Controller
public class RoleController {
@GetMapping("group1")
@ResponseBody
@PreAuthorize("hasRole('ROLE_group1')")
public String group1() {
return "group1 message";
}
@GetMapping("group2")
@ResponseBody
@PreAuthorize("hasRole('ROLE_group2')")
public String group2() {
return "group2 message";
}
@GetMapping("group1Id")
@ResponseBody
@PreAuthorize("hasRole('ROLE_<group1-id>')")
public String group1Id() {
return "group1Id message";
}
@GetMapping("group2Id")
@ResponseBody
@PreAuthorize("hasRole('ROLE_<group2-id>')")
public String group2Id() {
return "group2Id message";
}
}
Voorbeeld van eigenschap 3: Om de clientgegevensstroom in te schakelen in een resourceserver die andere resourceservers bezoekt, voert u de volgende stappen uit:
Voeg de volgende eigenschap toe aan uw application.yml-bestand:
spring:
cloud:
azure:
active-directory:
enabled: true
authorization-clients:
webapiC: # When authorization-grant-type is null, on behalf of flow is used by default
authorization-grant-type: client_credentials
scopes:
- <Web-API-C-app-id-url>/.default
Voeg code toe aan uw toepassing, vergelijkbaar met het volgende voorbeeld:
@PreAuthorize("hasAuthority('SCOPE_Obo.WebApiA.ExampleScope')")
@GetMapping("webapiA/webapiC")
public String callClientCredential() {
String body = webClient
.get()
.uri(CUSTOM_LOCAL_READ_ENDPOINT)
.attributes(clientRegistrationId("webapiC"))
.retrieve()
.bodyToMono(String.class)
.block();
LOGGER.info("Response from Client Credential: {}", body);
return "client Credential response " + (null != body ? "success." : "failed.");
}
Geavanceerde functies
Ondersteuning voor toegangsbeheer per id-token in een webtoepassing
De starter ondersteunt het maken van GrantedAuthority
op basis van een roles
-claim van een id-token, om dit id-token te kunnen gebruiken voor autorisatie in een webtoepassing. U kunt de appRoles
functie van Microsoft Entra ID gebruiken om een roles
claim te maken en toegangsbeheer te implementeren.
Notitie
De roles
claim gegenereerd op basis van appRoles
is versierd met voorvoegsel APPROLE_
.
Wanneer u appRoles
als een roles
claim gebruikt, moet u voorkomen dat u tegelijkertijd een groepskenmerk configureert als roles
. Anders zullen de groepskenmerken in plaats daarvan de claim overschrijven om groepsinformatie te bevatten in plaats van appRoles
. Vermijd de volgende configuratie in uw manifest:
"optionalClaims": {
"idtoken": [{
"name": "groups",
"additionalProperties": ["emit_as_roles"]
}]
}
Gebruik de volgende stappen om toegangsbeheer op id-token in een webtoepassing te ondersteunen:
Voeg app-rollen toe aan uw toepassing en wijs ze toe aan gebruikers of groepen. Zie Procedure: App-rollen toevoegen aan uw toepassing en deze ontvangen in het tokenvoor meer informatie.
Voeg de volgende appRoles
configuratie toe aan het manifest van uw toepassing:
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"displayName": "Admin",
"id": "2fa848d0-8054-4e11-8c73-7af5f1171001",
"isEnabled": true,
"description": "Full admin access",
"value": "Admin"
}
]
Voeg code toe aan uw toepassing, vergelijkbaar met het volgende voorbeeld:
@GetMapping("Admin")
@ResponseBody
@PreAuthorize("hasAuthority('APPROLE_Admin')")
public String Admin() {
return "Admin message";
}
Probleemoplossing
Clientlogboekregistratie inschakelen
De Azure SDK's voor Java bieden een uniforme logboekregistratiebenadering om toepassingsfouten te helpen oplossen. De gemaakte logboeken leggen de stroom van een toepassing vast voordat ze de terminal bereiken, waardoor het hoofdprobleem kan worden gevonden. Bekijk de wiki logboekregistratie voor instructies over het inschakelen van logboekregistratie.
Spring-logboekregistratie inschakelen
Met Spring kunnen alle ondersteunde logboekregistratiesystemen logboekregistratieniveaus instellen in de Spring-omgeving (bijvoorbeeld in application.properties) met behulp van logging.level.<logger-name>=<level>
waarbij niveau een van TRACE, DEBUG, INFO, WARN, ERROR, FATAL of OFF is. U kunt de hoofdlogger configureren met behulp van logging.level.root
.
In het volgende voorbeeld ziet u mogelijke logging-instellingen in het bestand application.properties:
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
Zie Logging in de Spring-documentatie voor meer informatie over de configuratie van logboekregistratie in Spring.
Volgende stappen
Ga naar het Documentatiecentrum van Spring op Azure voor meer informatie over Spring en Azure.