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:
- Azure aboneliği; henüz Azure aboneliğiniz yoksa MSDN abone avantajlarınızı etkinleştirebilir veya ücretsiz Azure hesabı için kaydolabilirsiniz.
- Desteklenen bir Java Geliştirme Seti (JDK), sürüm 8 veya üzeri. Daha fazla bilgi için bkz . Azure ve Azure Stack'te Java desteği.
- Apache Maven, sürüm 3.0 veya üzeri.
- Microsoft Entra Kimliği ile kaydedilmiş bir uygulama. Daha fazla bilgi için bkz. Hızlı başlangıç: Microsoft kimlik platformu ile bir uygulamayı kaydetme.
Ö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ına erişme
- Web uygulamasından kaynak sunucularına erişme
- Kaynak sunucusunu/API'lerini koruma
- Kaynak sunucusundan diğer kaynak sunucularına erişme
- Bir uygulamada web uygulaması ve kaynak sunucusu
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.
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
, consumers
veya 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
, consumers
veya 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 OAuth2AuthorizedClient
adı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:
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
, consumers
veya 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_server
ayarlayı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
, consumers
veya 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 , consumers veya 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ı appRoles
geç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.root
yapı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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin