Aracılığıyla paylaş


Microsoft Entra geliştirici kılavuzu için Spring Boot Starter

Bu makale şunlar için geçerlidir: ✔️ Sürüm 4.19.0 ✔️ Sürüm 5.13.0

Bu makalede, Microsoft Entra Id için Spring Boot Starter'ın özellikleri ve temel senaryoları açıklanmaktadır. Makale ayrıca yaygın sorunlar, geçici çözümler ve tanılama adımları hakkında yönergeler içerir.

Web uygulaması oluştururken kimlik ve erişim yönetimi temel parçalardır. Azure, Azure ekosisteminin geri kalanıyla derin tümleştirmeye sahip bulut tabanlı bir kimlik hizmeti sunar.

Spring Security, Spring tabanlı uygulamalarınızın güvenliğini sağlamayı kolaylaştırsa da, belirli bir kimlik sağlayıcısına uyarlanmamıştır. Microsoft Entra Id için Spring Boot Starter, web uygulamanızı bir Microsoft Entra kiracısına bağlamanızı ve Microsoft Entra Id ile kaynak sunucunuzu korumanızı sağlar. Web uygulamalarını ve kaynak sunucularını korumak için Oauth 2.0 protokolunu kullanır.

Aşağıdaki bağlantılar başlangıç paketine, belgelerine ve örneklerine erişim sağlar:

Önkoşullar

Bu kılavuzdaki yönergeleri izlemek için aşağıdaki önkoşullara sahip olmanız gerekir:

Önemli

Bu makaledeki adımları tamamlamak için Spring Boot sürüm 2.5 veya üzeri gereklidir.

Temel senaryolar

Bu kılavuzda, aşağıdaki senaryolarda Microsoft Entra starter'ın nasıl kullanılacağı açıklanmaktadır:

Web uygulaması , kullanıcının oturum açmasını sağlayan herhangi bir web tabanlı uygulamadır. Bir kaynak sunucusu , erişim belirtecini doğruladıktan sonra erişimi kabul eder veya reddeder.

Web uygulamasına erişme

Bu senaryoda kullanıcının Microsoft hesabıyla oturum açmasını sağlamak için OAuth 2.0 yetkilendirme kodu verme akışı kullanılır.

Bu senaryoda Microsoft Entra starter'ı kullanmak için aşağıdaki adımları kullanın:

Yeniden yönlendirme URI'sini <application-base-uri>/login/oauth2/code/ olarak ayarlayın. Örneğin: http://localhost:8080/login/oauth2/code/. Sondaki /öğesini eklediğinizden emin olun. Yeniden yönlendirme URI'si hakkında daha fazla bilgi için bkz. Hızlı Başlangıç: uygulamayı Microsoft kimlik platformu ile kaydetme bölümünde yeniden yönlendirme URI'siniekleme.

Yeniden yönlendirme URI'sinin vurgulandığı web uygulaması kimlik doğrulama sayfasını gösteren Azure portalının ekran görüntüsü.

pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin.

<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>

Not

Spring Cloud Azure kitaplık sürümlerini ürün reçetesi (BOM) kullanarak yönetme hakkında daha fazla bilgi için Spring Cloud Azure geliştirici kılavuzunun Başlarken bölümüne bakın.

application.yml dosyanıza aşağıdaki özellikleri ekleyin. Bu özelliklerin değerlerini, önkoşullarda açıklandığı gibi Azure portalında oluşturduğunuz uygulama kaydından alabilirsiniz.

spring:
 cloud:
   azure:
     active-directory:
       enabled: true
       profile:
         tenant-id: <tenant>
       credential:
         client-id: <your-client-ID>
         client-secret: <your-client-secret>

Not

için tenant-id izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için Hata AADSTS50020 - Kimlik sağlayıcısı kullanıcı hesabı kiracıda yok hatasının Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz . Microsoft Entra Id'de tek kiracılı uygulamayı çok kiracılıya dönüştürme.

Varsayılan güvenlik yapılandırmasını kullanın veya kendi yapılandırmanızı sağlayın.

Seçenek 1: Varsayılan yapılandırmayı kullanın.

Bu seçenekle hiçbir şey yapmanız gerekmez. DefaultAadWebSecurityConfigurerAdapter sınıfı otomatik olarak yapılandırılır.

Seçenek 2: Kendi kendine tanımlanmış bir yapılandırma sağlayın.

Yapılandırma sağlamak için sınıfını AadWebSecurityConfigurerAdapter genişletin ve aşağıdaki örnekte gösterildiği gibi işlevini çağırın super.configure(http)configure(HttpSecurity http) :

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class AadOAuth2LoginSecurityConfig extends AadWebSecurityConfigurerAdapter {

   /**
    * Add configuration logic as needed.
   */
   @Override
   protected void configure(HttpSecurity http) throws Exception {
       super.configure(http);
       http.authorizeRequests()
           .anyRequest().authenticated();
       // Do some custom configuration.
   }
}

Web uygulamasından kaynak sunucularına erişme

Bu senaryoda Microsoft Entra starter'ı kullanmak için aşağıdaki adımları kullanın:

Yeniden yönlendirme URI'sini daha önce açıklandığı gibi ayarlayın.

pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin.

<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>

Not

Spring Cloud Azure kitaplık sürümlerini ürün reçetesi (BOM) kullanarak yönetme hakkında daha fazla bilgi için Spring Cloud Azure geliştirici kılavuzunun Başlarken bölümüne bakın.

Daha önce açıklandığı gibi application.yml dosyanıza aşağıdaki özellikleri ekleyin:

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

Not

için tenant-id izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için Hata AADSTS50020 - Kimlik sağlayıcısı kullanıcı hesabı kiracıda yok hatasının Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz . Microsoft Entra Id'de tek kiracılı uygulamayı çok kiracılıya dönüştürme.

Burada, graph adınızın OAuth2AuthorizedClientadıdır ve scopes oturum açarken onay için gereken kapsamlardır.

Uygulamanıza aşağıdaki örneğe benzer bir kod ekleyin:

@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);
}

Burada, graph önceki adımda yapılandırılan istemci kimliğidir. OAuth2AuthorizedClient kaynak sunucusuna erişmek için kullanılan erişim belirtecini içerir.

Bu senaryoya ilişkin eksiksiz bir örnek için bkz . spring-cloud-azure-starter-active-directory örneği: aad-web-application.

Kaynak sunucusunu/API'lerini koruma

Bu senaryo oturum açmayı desteklemez, ancak erişim belirtecini doğrulayarak sunucuyu korur. Erişim belirteci geçerliyse, sunucu isteğe hizmet eder.

Bu senaryoda Microsoft Entra starter'ı kullanmak için aşağıdaki adımları kullanın:

pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin.

<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>

Not

Spring Cloud Azure kitaplık sürümlerini ürün reçetesi (BOM) kullanarak yönetme hakkında daha fazla bilgi için Spring Cloud Azure geliştirici kılavuzunun Başlarken bölümüne bakın.

Daha önce açıklandığı gibi application.yml dosyanıza aşağıdaki özellikleri ekleyin:

spring:
 cloud:
   azure:
     active-directory:
       enabled: true
       credential:
         client-id: <your-client-ID>
       app-id-uri: <your-app-ID-URI>

Erişim belirtecini doğrulamak için hem istemci> kimliğiniz hem de <uygulamanız-kimliği-URI> değerlerini kullanabilirsiniz.< Aşağıdaki görüntülerde <gösterildiği gibi Azure portalından your-app-ID-URI> değerini alabilirsiniz:

Uygulama Kimliği URI'si vurgulanmış bir API sayfasını kullanıma sunma web uygulamasını gösteren Azure portalı ekran görüntüsü.

Varsayılan güvenlik yapılandırmasını kullanın veya kendi yapılandırmanızı sağlayın.

Seçenek 1: Varsayılan yapılandırmayı kullanın.

Bu seçenekle, hiçbir şeye ihtiyacınız yoktur. DefaultAadResourceServerWebSecurityConfigurerAdapter sınıfı otomatik olarak yapılandırılır.

Seçenek 2: Kendi kendine tanımlanmış bir yapılandırma sağlayın.

Yapılandırma sağlamak için sınıfını AadResourceServerWebSecurityConfigurerAdapter genişletin ve aşağıdaki örnekte gösterildiği gibi işlevini çağırın super.configure(http)configure(HttpSecurity http) :

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class AadOAuth2ResourceServerSecurityConfig extends AadResourceServerWebSecurityConfigurerAdapter {

   /**
    * Add configuration logic as needed.
    */
   @Override
   protected void configure(HttpSecurity http) throws Exception {
       super.configure(http);
       http.authorizeRequests((requests) -> requests.anyRequest().authenticated());
   }
}

Bu senaryoya ilişkin eksiksiz bir örnek için bkz . spring-cloud-azure-starter-active-directory örneği: aad-resource-server.

Kaynak sunucusundan diğer kaynak sunucularına erişme

Bu senaryo, diğer kaynak sunucularını ziyaret eden bir kaynak sunucusunu destekler.

Bu senaryoda Microsoft Entra starter'ı kullanmak için aşağıdaki adımları kullanın:

pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin.

<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>

Not

Spring Cloud Azure kitaplık sürümlerini ürün reçetesi (BOM) kullanarak yönetme hakkında daha fazla bilgi için Spring Cloud Azure geliştirici kılavuzunun Başlarken bölümüne bakın.

application.yml dosyanıza aşağıdaki özellikleri ekleyin:

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

Not

için tenant-id izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için Hata AADSTS50020 - Kimlik sağlayıcısı kullanıcı hesabı kiracıda yok hatasının Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz . Microsoft Entra Id'de tek kiracılı uygulamayı çok kiracılıya dönüştürme.

@RegisteredOAuth2AuthorizedClient Aşağıdaki örnekte gösterildiği gibi ilgili kaynak sunucusuna erişmek için kodunuzdaki özniteliğini kullanın:

@PreAuthorize("hasAuthority('SCOPE_Obo.Graph.Read')")
@GetMapping("call-graph")
public String callGraph(@RegisteredOAuth2AuthorizedClient("graph") OAuth2AuthorizedClient graph) {
   return callMicrosoftGraphMeEndpoint(graph);
}

Bu senaryoya ilişkin eksiksiz bir örnek için bkz . spring-cloud-azure-starter-active-directory örneği: aad-resource-server-obo.

Bir uygulamada web uygulaması ve kaynak sunucusu

Bu senaryo bir web uygulamasına erişmeyi ve bir uygulamada kaynak sunucusunu/API'sini korumayı destekler.

Bu senaryoda kullanmak aad-starter için şu adımları izleyin:

pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin.

<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>

Not

Spring Cloud Azure kitaplık sürümlerini ürün reçetesi (BOM) kullanarak yönetme hakkında daha fazla bilgi için Spring Cloud Azure geliştirici kılavuzunun Başlarken bölümüne bakın.

application.yml dosyanızı güncelleştirin. özelliğini spring.cloud.azure.active-directory.application-type olarak web_application_and_resource_serverayarlayın ve aşağıdaki örnekte gösterildiği gibi her yetkilendirme istemcisi için yetkilendirme türünü belirtin.

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

Not

için tenant-id izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için Hata AADSTS50020 - Kimlik sağlayıcısı kullanıcı hesabı kiracıda yok hatasının Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz . Microsoft Entra Id'de tek kiracılı uygulamayı çok kiracılıya dönüştürme.

Birden çok HttpSecurity örneği yapılandırmak için Java kodu yazın.

Aşağıdaki örnek kodda biri AadWebApplicationAndResourceServerConfig kaynak sunucusu, diğeri de web uygulaması için olmak üzere iki güvenlik yapılandırması içerir. sınıfı, ApiWebSecurityConfigurationAdapter kaynak sunucusu güvenlik bağdaştırıcısını yapılandırmak için yüksek önceliğe sahiptir. sınıfı, HtmlWebSecurityConfigurerAdapter web uygulaması güvenlik bağdaştırıcısını yapılandırmak için düşük önceliğe sahiptir.

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class AadWebApplicationAndResourceServerConfig {

   @Order(1)
   @Configuration
   public static class ApiWebSecurityConfigurationAdapter extends AadResourceServerWebSecurityConfigurerAdapter {
       protected void configure(HttpSecurity http) throws Exception {
           super.configure(http);
           // All the paths that match `/api/**`(configurable) work as the esource server. Other paths work as  the web application.
           http.antMatcher("/api/**")
               .authorizeRequests().anyRequest().authenticated();
       }
   }

   @Configuration
   public static class HtmlWebSecurityConfigurerAdapter extends AadWebSecurityConfigurerAdapter {

       @Override
       protected void configure(HttpSecurity http) throws Exception {
           super.configure(http);
           // @formatter:off
           http.authorizeRequests()
                   .antMatchers("/login").permitAll()
                   .anyRequest().authenticated();
           // @formatter:on
       }
   }
}

Uygulama türü

spring.cloud.azure.active-directory.application-type özelliği isteğe bağlıdır çünkü değeri bağımlılıklar tarafından çıkarılabilir. Özelliği yalnızca değeri kullandığınızda web_application_and_resource_server el ile ayarlamanız gerekir.

Bağımlılığı var: spring-security-oauth2-client Bağımlılığı var: spring-security-oauth2-resource-server Uygulama türünün geçerli değerleri Varsayılan değer
Yes Hayır web_application web_application
Hayır Evet resource_server resource_server
Evet Yes web_application,resource_server,
resource_server_with_obo, web_application_and_resource_server
resource_server_with_obo

Yapılandırılabilir özellikler

Microsoft Entra Id için Spring Boot Starter aşağıdaki özellikleri sağlar:

Properties Açıklama
spring.cloud.azure.active-directory.app-id-uri Erişim belirtecindeki hedef kitleyi doğrulamak için kaynak sunucusu tarafından kullanılır. Erişim belirteci yalnızca hedef kitle daha önce açıklanan istemci-kimliğiniz> veya< uygulamanız-kimliği-URI> değerlerine eşit <olduğunda geçerlidir.
spring.cloud.azure.active-directory.authorization-clients Uygulamanın ziyaret edecek kaynak API'lerini yapılandıran bir harita. Her öğe, uygulamanın ziyaret edecekleri bir kaynak API'sine karşılık gelir. Spring kodunuzda her öğe bir OAuth2AuthorizedClient nesneye karşılık gelir.
spring.cloud.azure.active-directory.authorization-clients.<your-client-name.scopes> Uygulamanın edindiği kaynak sunucusunun API izinleri.
spring.cloud.azure.active-directory.authorization-clients.<your-client-name.authorization-grant-type> Yetkilendirme istemcisinin türü. Desteklenen türler authorization_code (web uygulaması için varsayılan tür), on_behalf_of (resource-server için varsayılan tür), client_credentials.
spring.cloud.azure.active-directory.application-type Uygulama türüne bakın.
spring.cloud.azure.active-directory.profile.environment.active-directory-endpoint Yetkilendirme sunucusu için temel URI. Varsayılan değer şudur: https://login.microsoftonline.com/.
spring.cloud.azure.active-directory.credential.client-id Microsoft Entra Id'de kayıtlı uygulama kimliği.
spring.cloud.azure.active-directory.credential.client-secret Kayıtlı uygulamanın istemci gizli dizisi.
spring.cloud.azure.active-directory.user-group.use-transitive-members True olarak ayarlanmış grupları almak için kullanınv1.0/me/transitiveMemberOf. Aksi takdirde kullanın /v1.0/me/memberOf.
spring.cloud.azure.active-directory.post-logout-redirect-uri Oturumu kapatmayı göndermek için yeniden yönlendirme URI'si.
spring.cloud.azure.active-directory.profile.tenant-id Azure kiracı kimliği. için tenant-id izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği.
spring.cloud.azure.active-directory.user-group.allowed-group-names Beklenen kullanıcı, Graph API çağrısının yanıtında bulunursa bir yetkilinin MemberOf verileceği kullanıcı gruplarıdır.
spring.cloud.azure.active-directory.user-name-attribute Sorumlunun adı olarak hangi talebin bulunacağını gösterir.

Aşağıdaki örneklerde bu özelliklerin nasıl kullanılacağı gösterilmektedir:

Özellik örneği 1: Azure Global yerine Azure China 21Vianet kullanmak için aşağıdaki adımı kullanın.

  • application.yml dosyanıza aşağıdaki özellikleri ekleyin:

    spring:
       cloud:
         azure:
           active-directory:
             enabled: true
             profile:
               environment:
                 active-directory-endpoint: https://login.partner.microsoftonline.cn
    

Bu yöntemle, Azure genel bulutu yerine Azure bağımsız veya ulusal bir bulut kullanabilirsiniz.

Özellik örneği 2: Bir web uygulamasında bazı yöntemleri korumak için grup adı kullanmak için aşağıdaki adımları kullanın:

application.yml dosyanıza aşağıdaki özelliği ekleyin:

spring:
 cloud:
   azure:
     active-directory:
       enabled: true
       user-group:
         allowed-groups: group1, group2

Varsayılan güvenlik yapılandırmasını kullanın veya kendi yapılandırmanızı sağlayın.

Seçenek 1: Varsayılan yapılandırmayı kullanın. Bu seçenekle hiçbir şey yapmanız gerekmez. DefaultAadWebSecurityConfigurerAdapter sınıfı otomatik olarak yapılandırılır.

Seçenek 2: Kendi kendine tanımlanmış bir yapılandırma sağlayın. Yapılandırma sağlamak için sınıfını AadWebSecurityConfigurerAdapter genişletin ve aşağıdaki örnekte gösterildiği gibi işlevini çağırın super.configure(http)configure(HttpSecurity http) :

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class AadOAuth2LoginSecurityConfig extends AadWebSecurityConfigurerAdapter {

   /**
    * Add configuration logic as needed.
    */
   @Override
   protected void configure(HttpSecurity http) throws Exception {
       super.configure(http);
       http.authorizeRequests()
           .anyRequest().authenticated();
       // Do some custom configuration.
   }
}

@PreAuthorize Aşağıdaki örnekte gösterildiği gibi yöntemini korumak için ek açıklamayı kullanın:

@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";
   }
}

Özellik örneği 3: Kaynak sunucularını ziyaret eden bir kaynak sunucusunda istemci kimlik bilgisi akışını etkinleştirmek için aşağıdaki adımları kullanın:

application.yml dosyanıza aşağıdaki özelliği ekleyin:

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

Uygulamanıza aşağıdaki örneğe benzer bir kod ekleyin:

@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.");
}

Gelişmiş özellikler

Web uygulamasında kimlik belirteciyle erişim denetimini destekleme

Başlatıcı, kimlik belirtecinin roles web uygulamasında yetkilendirme için kimlik belirtecinin kullanılmasına izin vermek için talepten oluşturmayı GrantedAuthority destekler. Talep oluşturmak roles ve erişim denetimi uygulamak için Microsoft Entra Id özelliğini kullanabilirsinizappRoles.

Not

roles öğesinden appRoles oluşturulan talep ön ekiyle APPROLE_dekore edilmiştir.

Talep olarak roles kullanırken appRoles grup özniteliğini roles aynı anda yapılandırmaktan kaçının. Aksi takdirde, grup özniteliği yerine grup bilgilerini içerme iddiasını appRolesgeçersiz kılar. Bildiriminizde aşağıdaki yapılandırmadan kaçınmalısınız:

"optionalClaims": {
    "idtoken": [{
        "name": "groups",
        "additionalProperties": ["emit_as_roles"]
    }]
}

Web uygulamasında kimlik belirtecine göre erişim denetimini desteklemek için aşağıdaki adımları kullanın:

Uygulamanıza uygulama rolleri ekleyin ve bunları kullanıcılara veya gruplara atayın. Daha fazla bilgi için bkz . Nasıl yapılır: Uygulamanıza uygulama rolleri ekleme ve bunları belirteçte alma.

Uygulamanızın bildirimine aşağıdaki appRoles yapılandırmayı ekleyin:

 "appRoles": [
   {
     "allowedMemberTypes": [
       "User"
     ],
     "displayName": "Admin",
     "id": "2fa848d0-8054-4e11-8c73-7af5f1171001",
     "isEnabled": true,
     "description": "Full admin access",
     "value": "Admin"
    }
 ]

Uygulamanıza aşağıdaki örneğe benzer bir kod ekleyin:

@GetMapping("Admin")
@ResponseBody
@PreAuthorize("hasAuthority('APPROLE_Admin')")
public String Admin() {
   return "Admin message";
}

Sorun giderme

İstemci günlüğünü etkinleştirme

Java için Azure SDK'ları, uygulama hatalarını gidermeye ve çözmeye yardımcı olmak için tutarlı bir günlüğe kaydetme hikayesi sunar. Oluşturulan günlükler, terminale ulaşmadan önce uygulamanın akışını yakalar ve kök sorunun bulunmasına yardımcı olur. Günlüğe kaydetmeyi etkinleştirme yönergeleri için günlüğe kaydetme wiki'sini görüntüleyin.

Spring günlüğünü etkinleştirme

Spring, tüm desteklenen günlük sistemlerinin trace, DEBUG, INFO, WARN, ERROR, FATAL veya OFF düzeylerinden biri olduğu yeri kullanarak logging.level.<logger-name>=<level> Spring ortamında günlükçü düzeylerini ayarlamasını sağlar (örneğin, application.properties). kullanarak kök günlükçü'leri logging.level.rootyapılandırabilirsiniz.

Aşağıdaki örnek, application.properties dosyasındaki olası günlük ayarlarını gösterir:

logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

Spring'de günlük yapılandırması hakkında daha fazla bilgi için Spring belgelerinde Günlüğe kaydetme bölümüne bakın.

Sonraki adımlar

Spring ve Azure hakkında daha fazlasını öğrenmek için Azure’da Spring belge merkezinde çalışmaya devam edin.