Delen via


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:

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:

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.

Schermopname van de Azure-portal met de authenticatiepagina van webapps met gemarkeerde 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, consumersof 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, consumersof 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:

Schermafdruk van Azure portal met web-apppagina 'Expose an API' waarbij de URI voor de toepassings-id is gemarkeerd.

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, consumersof 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_serveren 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, consumersof 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, consumersof 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.