Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan fitur dan skenario inti Spring Boot Starter untuk ID Microsoft Entra. Artikel ini juga mencakup panduan tentang masalah umum, solusi, dan langkah diagnostik.
Saat Anda membangun aplikasi web, manajemen identitas dan akses adalah komponen dasar. Azure menawarkan layanan identitas berbasis cloud yang memiliki integrasi mendalam dengan ekosistem Azure lainnya.
Meskipun Spring Security memudahkan untuk mengamankan aplikasi berbasis Spring Anda, itu tidak disesuaikan dengan penyedia identitas tertentu. Spring Boot Starter untuk MICROSOFT Entra ID memungkinkan Anda menyambungkan aplikasi web Anda ke penyewa Microsoft Entra dan melindungi server sumber daya Anda dengan ID Microsoft Entra. Ini menggunakan protokol Oauth 2.0 untuk melindungi aplikasi web dan server sumber daya.
Tautan berikut menyediakan akses ke paket pemula, dokumentasi, dan sampel:
Prasyarat
Untuk mengikuti instruksi dalam panduan ini, Anda harus memiliki prasyarat berikut:
- Langganan Azure; jika Anda belum memiliki langganan Azure, Anda dapat mengaktifkan manfaat pelanggan MSDN atau mendaftar untuk akun Azure gratis .
- Java Development Kit (JDK) yang didukung, versi 8 atau yang lebih tinggi. Untuk informasi selengkapnya, lihat dukungan Java di Azure dan Azure Stack.
- Apache Maven, versi 3.0 atau yang lebih tinggi.
- Aplikasi yang terdaftar dengan ID Microsoft Entra. Untuk informasi selengkapnya, lihat Panduan Cepat : Mendaftarkan aplikasi dengan platform identitas Microsoft.
Penting
Spring Boot versi 2.5 atau yang lebih tinggi diperlukan untuk menyelesaikan langkah-langkah dalam artikel ini.
Skenario inti
Panduan ini menjelaskan cara menggunakan microsoft Entra starter dalam skenario berikut:
- Mengakses aplikasi web
- Mengakses server sumber daya dari aplikasi web
- Melindungi server sumber daya/api
- Mengakses server sumber daya lainnya dari sebuah server sumber daya
- aplikasi web dan server sumber daya dalam satu aplikasi
Aplikasi web adalah aplikasi berbasis web apa pun yang memungkinkan pengguna untuk masuk. Server sumber daya akan menerima atau menolak akses setelah memvalidasi token akses.
Mengakses aplikasi web
Skenario ini menggunakan alur pemberian kode otorisasi OAuth 2.0 untuk memungkinkan pengguna masuk dengan akun Microsoft.
Untuk menggunakan microsoft Entra starter dalam skenario ini, gunakan langkah-langkah berikut:
Atur URI pengalihan ke <application-base-uri>/login/oauth2/code/
. Misalnya: http://localhost:8080/login/oauth2/code/
. Pastikan untuk menyertakan /
yang mengikuti. Untuk informasi selengkapnya tentang URI pengalihan, lihat Menambahkan URI pengalihan di Panduan Mulai Cepat : Mendaftarkan aplikasi dengan platform identitas Microsoft.
Tambahkan dependensi berikut ke file pom.xml Anda.
<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>
Nota
Untuk informasi selengkapnya tentang cara mengelola versi pustaka Spring Cloud Azure dengan menggunakan daftar bahan (BOM), lihat pada bagian Memulai dari panduan pengembang Spring Cloud Azure.
Tambahkan properti berikut ke file application.yml Anda. Anda bisa mendapatkan nilai untuk properti ini dari pendaftaran aplikasi yang Anda buat di portal Microsoft Azure, seperti yang dijelaskan dalam prasyarat.
spring:
cloud:
azure:
active-directory:
enabled: true
profile:
tenant-id: <tenant>
credential:
client-id: <your-client-ID>
client-secret: <your-client-secret>
Nota
Nilai yang diizinkan untuk tenant-id
adalah: common
, organizations
, consumers
, atau ID penyewa. Untuk informasi selengkapnya tentang nilai-nilai ini, lihat bagian Menggunakan titik akhir yang salah (akun pribadi dan organisasi) dari Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat Mengonversi aplikasi penyewa tunggal ke multipenyewa di ID Microsoft Entra.
Gunakan konfigurasi keamanan default atau berikan konfigurasi Anda sendiri.
Opsi 1: Gunakan konfigurasi default.
Dengan opsi ini, Anda tidak perlu melakukan apa pun. Kelas DefaultAadWebSecurityConfiguration
dikonfigurasi secara otomatis.
Opsi 2: Berikan konfigurasi yang ditentukan sendiri.
Untuk menyediakan konfigurasi, terapkan metode AadWebApplicationHttpSecurityConfigurer#aadWebApplication
untuk HttpSecurity
, seperti yang ditunjukkan dalam contoh berikut:
@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();
}
}
Mengakses server sumber daya dari aplikasi web
Untuk menggunakan microsoft Entra starter dalam skenario ini, gunakan langkah-langkah berikut:
Atur URI pengalihan seperti yang dijelaskan sebelumnya.
Tambahkan dependensi berikut ke file pom.xml Anda.
<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>
Nota
Untuk informasi selengkapnya tentang cara mengelola versi pustaka Spring Cloud Azure dengan menggunakan daftar bahan (BOM), lihat pada bagian Memulai dari panduan pengembang Spring Cloud Azure.
Tambahkan properti berikut ke file application.yml Anda, seperti yang dijelaskan sebelumnya:
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
Nota
Nilai yang diizinkan untuk tenant-id
adalah: common
, organizations
, consumers
, atau ID penyewa. Untuk informasi selengkapnya tentang nilai-nilai ini, lihat bagian Menggunakan titik akhir yang salah (akun pribadi dan organisasi) dari Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat Mengonversi aplikasi penyewa tunggal ke multipenyewa di ID Microsoft Entra.
Di sini, graph
adalah nama OAuth2AuthorizedClient
Anda, dan scopes
adalah ruang lingkup yang diperlukan untuk persetujuan saat masuk.
Tambahkan kode ke aplikasi Anda yang mirip dengan contoh berikut:
@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);
}
Di sini, graph
adalah ID klien yang dikonfigurasi pada langkah sebelumnya.
OAuth2AuthorizedClient
berisi token akses, yang digunakan untuk mengakses server sumber daya.
Untuk sampel lengkap yang menunjukkan skenario ini, lihat sampel spring-cloud-azure-starter-active-directory: aad-web-application.
Melindungi sumber daya server/API
Skenario ini tidak mendukung masuk, tetapi melindungi server dengan memvalidasi token akses. Jika token akses valid, server melayani permintaan.
Untuk menggunakan microsoft Entra starter dalam skenario ini, gunakan langkah-langkah berikut:
Tambahkan dependensi berikut ke file pom.xml Anda.
<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>
Nota
Untuk informasi selengkapnya tentang cara mengelola versi pustaka Spring Cloud Azure dengan menggunakan daftar bahan (BOM), lihat pada bagian Memulai dari panduan pengembang Spring Cloud Azure.
Tambahkan properti berikut ke file application.yml Anda, seperti yang dijelaskan sebelumnya:
spring:
cloud:
azure:
active-directory:
enabled: true
credential:
client-id: <your-client-ID>
app-id-uri: <your-app-ID-URI>
Anda dapat menggunakan nilai <your-client-ID>
dan <your-app-ID-URI>
untuk memverifikasi token akses. Anda bisa mendapatkan nilai <your-app-ID-URI>
dari portal Microsoft Azure, seperti yang diperlihatkan dalam gambar berikut:
Gunakan konfigurasi keamanan default atau berikan konfigurasi Anda sendiri.
Opsi 1: Gunakan konfigurasi default.
Dengan opsi ini, Anda tidak perlu melakukan apa pun. Kelas DefaultAadResourceServerConfiguration
dikonfigurasi secara otomatis.
Opsi 2: Berikan konfigurasi yang ditentukan sendiri.
Untuk menyediakan konfigurasi, terapkan metode AadResourceServerHttpSecurityConfigurer#aadResourceServer
untuk HttpSecurity
, seperti yang ditunjukkan dalam contoh berikut:
@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();
}
}
Untuk contoh lengkap yang menunjukkan skenario ini, lihat spring-cloud-azure-starter-active-directory: aad-resource-server.
Mengakses server sumber daya lainnya dari server sumber daya
Skenario ini mendukung server sumber daya yang mengunjungi server sumber daya lain.
Untuk menggunakan microsoft Entra starter dalam skenario ini, gunakan langkah-langkah berikut:
Tambahkan dependensi berikut ke file pom.xml Anda.
<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>
Nota
Untuk informasi selengkapnya tentang cara mengelola versi pustaka Spring Cloud Azure dengan menggunakan daftar bahan (BOM), lihat pada bagian Memulai dari panduan pengembang Spring Cloud Azure.
Tambahkan properti berikut ke file application.yml Anda:
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
Nota
Nilai yang diizinkan untuk tenant-id
adalah: common
, organizations
, consumers
, atau ID penyewa. Untuk informasi selengkapnya tentang nilai-nilai ini, lihat bagian Menggunakan titik akhir yang salah (akun pribadi dan organisasi) dari Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat Mengonversi aplikasi penyewa tunggal ke multipenyewa di ID Microsoft Entra.
Gunakan atribut @RegisteredOAuth2AuthorizedClient
dalam kode Anda untuk mengakses server sumber daya terkait, seperti yang ditunjukkan dalam contoh berikut:
@PreAuthorize("hasAuthority('SCOPE_Obo.Graph.Read')")
@GetMapping("call-graph")
public String callGraph(@RegisteredOAuth2AuthorizedClient("graph") OAuth2AuthorizedClient graph) {
return callMicrosoftGraphMeEndpoint(graph);
}
Untuk contoh lengkap yang menunjukkan skenario ini, lihat contoh spring-cloud-azure-starter-active-directory: aad-resource-server-obo.
Aplikasi web dan server sumber daya dalam satu aplikasi
Skenario ini mendukung Mengakses aplikasi web dan Melindungi server sumber daya/API dalam satu aplikasi.
Untuk menggunakan aad-starter
dalam skenario ini, ikuti langkah-langkah berikut:
Tambahkan dependensi berikut ke file pom.xml Anda.
<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>
Nota
Untuk informasi selengkapnya tentang cara mengelola versi pustaka Spring Cloud Azure dengan menggunakan daftar bahan (BOM), lihat pada bagian Memulai dari panduan pengembang Spring Cloud Azure.
Perbarui file application.yml Anda. Atur properti spring.cloud.azure.active-directory.application-type
ke web_application_and_resource_server
, dan tentukan jenis otorisasi untuk setiap klien otorisasi, seperti yang ditunjukkan dalam contoh berikut.
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
Nota
Nilai yang diizinkan untuk tenant-id
adalah: common
, organizations
, consumers
, atau ID penyewa. Untuk informasi selengkapnya tentang nilai-nilai ini, lihat bagian Menggunakan titik akhir yang salah (akun pribadi dan organisasi) dari Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat Mengonversi aplikasi penyewa tunggal ke multipenyewa di ID Microsoft Entra.
Tulis kode Java untuk mengonfigurasi beberapa instans HttpSecurity
.
Dalam contoh kode berikut, AadWebApplicationAndResourceServerConfig
berisi dua biji rantai filter keamanan, satu untuk server sumber daya, dan satu untuk aplikasi web. Bean apiFilterChain
memiliki prioritas tinggi untuk mengonfigurasi pembangun keamanan server sumber daya. Bean htmlFilterChain
memiliki prioritas rendah untuk mengonfigurasi penyusun keamanan aplikasi web.
@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();
}
}
Jenis aplikasi
Properti spring.cloud.azure.active-directory.application-type
bersifat opsional karena nilainya dapat disimpulkan oleh dependensi. Anda harus mengatur properti secara manual hanya saat Anda menggunakan nilai web_application_and_resource_server
.
Dependensinya adalah: spring-security-oauth2-client | Memiliki dependensi: spring-security-oauth2-resource-server | Nilai jenis aplikasi yang valid | Nilai bawaan |
---|---|---|---|
Ya | Tidak | web_application |
web_application |
Tidak | Ya | resource_server |
resource_server |
Ya | Ya |
web_application ,resource_server ,resource_server_with_obo , web_application_and_resource_server |
resource_server_with_obo |
Properti yang dapat dikonfigurasi
Spring Boot Starter untuk ID Microsoft Entra menyediakan properti berikut:
Properti | Deskripsi |
---|---|
spring.cloud.azure.direktori-aktif.aplikasi-id-uri | Digunakan oleh server sumber daya untuk memvalidasi audiens dalam token akses. Token akses hanya valid saat audiens sama dengan nilai <your-client-ID> atau <your-app-ID-URI> yang dijelaskan sebelumnya. |
spring.cloud.azure.direktori-aktif.klien-otorisasi | Peta yang mengonfigurasi API sumber daya yang akan dikunjungi aplikasi. Setiap item sesuai dengan satu API sumber daya yang akan dikunjungi aplikasi. Dalam kode Spring Anda, setiap item sesuai dengan satu objek OAuth2AuthorizedClient . |
spring.cloud.azure.active-directory.authorization-clients.<your-client-name> .cakupan |
Izin API dari server sumber daya yang akan diperoleh aplikasi. |
spring.cloud.azure.active-directory.authorization-clients.<your-client-name> . jenis pemberian otorisasi |
Jenis klien otorisasi. Jenis yang didukung authorization_code (jenis default untuk webapp), on_behalf_of (jenis default untuk resource-server), client_credentials . |
spring.cloud.azure.active-directory.jenis-aplikasi | Lihat jenis aplikasi . |
spring.cloud.azure.active-directory.profile.environment.active-directory-endpoint | URI dasar untuk server otorisasi. Nilai defaultnya adalah https://login.microsoftonline.com/ . |
spring.cloud.azure.active-directory.credential.client-id | ID aplikasi yang terdaftar di Entra ID Microsoft. |
spring.cloud.azure.active-directory.credential.client-secret | Kunci rahasia klien dari aplikasi yang terdaftar. |
spring.cloud.azure.active-directory.user-group.use-transitive-members | Gunakan v1.0/me/transitiveMemberOf untuk mendapatkan grup jika diatur ke true . Jika tidak, gunakan /v1.0/me/memberOf . |
spring.cloud.azure.active-directory.URI-pengalihan-setelah-keluar | URI pengalihan untuk memposting proses keluar dari akun. |
spring.cloud.azure.active-directory.profile.tenant-id | ID penyewa Azure. Nilai yang diizinkan untuk tenant-id adalah: common , organizations , consumers , atau ID penyewa. |
spring.cloud.azure.active-directory.user-group.allowed-group-names | Grup pengguna yang diantisipasi akan diberikan hak akses jika disebutkan dalam respons panggilan Graph API MemberOf . |
spring.cloud.azure.active-directory.atribut-nama-pengguna | Menunjukkan klaim mana yang akan menjadi nama utama. |
Contoh berikut menunjukkan kepada Anda cara menggunakan properti ini:
Contoh properti 1: Untuk menggunakan Azure China 21Vianet alih-alih Azure Global, gunakan langkah berikut.
Tambahkan properti berikut ke file application.yml Anda:
spring: cloud: azure: active-directory: enabled: true profile: environment: active-directory-endpoint: https://login.partner.microsoftonline.cn
Dengan metode ini, Anda dapat menggunakan cloud Azure berdaulat atau cloud nasional alih-alih cloud publik Azure.
Contoh properti 2: Untuk menggunakan nama grup untuk melindungi beberapa metode dalam aplikasi web, gunakan langkah-langkah berikut:
Tambahkan properti berikut ke file application.yml Anda:
spring:
cloud:
azure:
active-directory:
enabled: true
user-group:
allowed-groups: group1, group2
Gunakan konfigurasi keamanan default atau berikan konfigurasi Anda sendiri.
Opsi 1: Gunakan konfigurasi default. Dengan opsi ini, Anda tidak perlu melakukan apa pun. Kelas DefaultAadWebSecurityConfiguration
dikonfigurasi secara otomatis.
Opsi 2: Berikan konfigurasi yang ditentukan sendiri. Untuk menyediakan konfigurasi, terapkan metode AadWebApplicationHttpSecurityConfigurer#aadWebApplication
untuk HttpSecurity
, seperti yang ditunjukkan dalam contoh berikut:
@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();
}
}
Gunakan anotasi @PreAuthorize
untuk melindungi metode , seperti yang ditunjukkan dalam contoh berikut:
@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";
}
}
Contoh properti 3: Untuk mengaktifkan alur kredensial klien di server sumber daya yang mengunjungi server sumber daya, gunakan langkah-langkah berikut:
Tambahkan properti berikut ke file application.yml Anda:
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
Tambahkan kode ke aplikasi Anda yang mirip dengan contoh berikut:
@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.");
}
Fitur tingkat lanjut
Mendukung kontrol akses berdasarkan token ID dalam aplikasi web
Starter mendukung penciptaan GrantedAuthority
dari klaim roles
token ID agar token ID dapat digunakan untuk otorisasi dalam aplikasi web. Anda dapat menggunakan fitur appRoles
ID Microsoft Entra untuk membuat klaim roles
dan menerapkan kontrol akses.
Nota
Klaim roles
yang dihasilkan dari appRoles
dihiasi dengan awalan APPROLE_
.
Saat menggunakan appRoles
sebagai klaim roles
, hindari mengonfigurasi atribut grup sebagai roles
secara bersamaan. Jika tidak, atribut grup akan menggantikan klaim untuk berisi informasi grup, bukan appRoles
. Anda harus menghindari konfigurasi berikut dalam manifes Anda:
"optionalClaims": {
"idtoken": [{
"name": "groups",
"additionalProperties": ["emit_as_roles"]
}]
}
Untuk mendukung kontrol akses menurut token ID di aplikasi web, gunakan langkah-langkah berikut:
Tambahkan peran aplikasi di aplikasi Anda dan tetapkan ke pengguna atau grup. Untuk informasi selengkapnya, lihat Cara: Menambahkan peran aplikasi ke aplikasi Anda dan menerimanya di token.
Tambahkan konfigurasi appRoles
berikut ke manifes aplikasi Anda:
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"displayName": "Admin",
"id": "2fa848d0-8054-4e11-8c73-7af5f1171001",
"isEnabled": true,
"description": "Full admin access",
"value": "Admin"
}
]
Tambahkan kode ke aplikasi Anda yang mirip dengan contoh berikut:
@GetMapping("Admin")
@ResponseBody
@PreAuthorize("hasAuthority('APPROLE_Admin')")
public String Admin() {
return "Admin message";
}
Pemecahan masalah
Aktifkan pengelogan klien
Azure SDK untuk Java menawarkan cerita pengelogan yang konsisten untuk membantu memecahkan masalah dan mengatasi kesalahan aplikasi. Log yang dihasilkan akan menangkap alur aplikasi sebelum mencapai terminal, membantu menemukan masalah akar. Lihat wiki pengelogan untuk panduan tentang pengaktifan log.
Aktifkan pengelogan Spring
Spring memungkinkan semua sistem pengelogan yang didukung untuk mengatur tingkat pencatat di lingkungan Spring - misalnya, di application.properties - dengan menggunakan logging.level.<logger-name>=<level>
di mana <level>
adalah salah satu TRACE
, DEBUG
, INFO
, WARN
, ERROR
, FATAL
, atau OFF
. Anda dapat mengonfigurasi pencatat akar dengan menggunakan logging.level.root
.
Contoh berikut menunjukkan potensi pengaturan pengelogan dalam file application.properties:
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
Untuk informasi selengkapnya tentang konfigurasi pencatatan log di Spring, lihat Pencatatan dalam dokumentasi Spring.
Langkah berikutnya
Untuk mempelajari selengkapnya tentang Spring dan Azure, lanjutkan ke pusat dokumentasi Spring on Azure.