


Pembangunan bahagian belakang Java: Membina API selamat berdasarkan OAuth2
OAuth2 ialah salah satu daripada protokol pengesahan dan kebenaran yang digunakan secara meluas dalam aplikasi moden. Ia membolehkan pengguna membenarkan aplikasi pihak ketiga untuk mengakses sumber mereka sambil melindungi maklumat sensitif pengguna daripada dibocorkan. Dalam artikel ini, kami akan memperkenalkan cara membina API selamat berdasarkan OAuth2 menggunakan pembangunan backend Java.
- Apakah itu OAuth2?
OAuth2 ialah protokol kebenaran popular yang direka untuk menyelesaikan masalah kebenaran antara aplikasi. Ia membenarkan pengguna membenarkan aplikasi pihak ketiga untuk mengakses sumber mereka, seperti akaun Google Drive atau Facebook, sambil melindungi kelayakan pengguna daripada dikompromi. OAuth2 mengandungi 4 peranan: pemilik sumber, klien, pelayan kebenaran dan pelayan sumber. Pemilik sumber ialah pengguna atau entiti dengan sumber yang dilindungi; klien ialah aplikasi yang meminta akses kepada sumber; pelayan yang menyimpan dan menyediakan sumber. OAuth2 mengeluarkan token melalui pelayan kebenaran dan pelanggan menggunakan token untuk meminta sumber daripada pelayan sumber.
- Proses OAuth2
Proses OAuth2 terdiri daripada langkah berikut:
- Pelanggan membuat permintaan kepada pelayan kebenaran, termasuk pengecam dan URI Diarahkan semula.
- Pelayan kebenaran mengesahkan identiti pelanggan dan memerlukan pemilik sumber membenarkan pelanggan mengakses sumbernya.
- Pemilik sumber membenarkan pelanggan untuk mengakses sumber mereka.
- Pelayan kebenaran mengeluarkan token akses kepada pelanggan.
- Pelanggan menggunakan token akses untuk meminta akses kepada sumber daripada pelayan sumber.
- Pelayan sumber mengesahkan bahawa token akses adalah sah dan menyediakan sumber tersebut.
- Bina API selamat berdasarkan OAuth2
Untuk membina API selamat, kita perlu melaksanakan langkah berikut:
- Buat pelayan OAuth2: Kita perlu mencipta OAuth2 Pelayan mengeluarkan token akses, mengesahkan pelanggan dan membenarkan permintaan.
- Mengkonfigurasi Spring Security: Spring Security ialah rangka kerja keselamatan dalam ekosistem Spring yang mengendalikan pengesahan dan kebenaran. Kami perlu mengkonfigurasi aliran pengesahan dan kebenaran OAuth2 untuk Spring Security.
- Buat klien: Kami perlu mencipta klien untuk meminta akses kepada pelayan sumber dan mendapatkan token akses daripada pelayan OAuth2.
- Buat pelayan sumber: Kami perlu mencipta pelayan sumber untuk menyimpan dan menyediakan sumber yang dilindungi.
- Sahkan token akses: Kami perlu mengesahkan sama ada token akses itu sah dalam pelayan sumber dan menyediakan sumber yang sepadan mengikut skop token.
Berikut ialah contoh OAuth2 berdasarkan rangka kerja Java dan Spring:
- Buat pelayan OAuth2:
@EnableAuthorizationServer
@Configuration
kelas awam OAuth2AuthorizationConfig memanjangkan AuthorizationServerConfigurerAdapter {
private final PasswordEncoder passwordEncoder; private final AuthenticationManager authenticationManager; private final UserDetailsService userDetailsService; @Autowired public OAuth2AuthorizationConfig( PasswordEncoder passwordEncoder, AuthenticationManager authenticationManager, UserDetailsService userDetailsService ) { this.passwordEncoder = passwordEncoder; this.authenticationManager = authenticationManager; this.userDetailsService = userDetailsService; } @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.inMemory() .withClient("client") .secret(passwordEncoder.encode("secret")) .authorizedGrantTypes("authorization_code") .scopes("read", "write", "trust") .redirectUris("http://localhost:8080/login/oauth2/code/"); } @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { endpoints.authenticationManager(authenticationManager) .userDetailsService(userDetailsService); }
}
- Konfigurasikan Spring Security:
@WeSecurity
@We Security
@WeSecurity
>@ EnableGlobalMethodSecurity(prePostEnabled = true)
private final UserDetailsService userDetailsService; private final PasswordEncoder passwordEncoder; @Autowired public WebSecurityConfig( UserDetailsService userDetailsService, PasswordEncoder passwordEncoder ) { this.userDetailsService = userDetailsService; this.passwordEncoder = passwordEncoder; } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userDetailsService) .passwordEncoder(passwordEncoder); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/oauth/**").permitAll() .anyRequest().authenticated() .and() .oauth2Login(); }
- Buat pelanggan:
ClientController kelas awam {
private final OAuth2AuthorizedClientService authorizedClientService; @Autowired public ClientController(OAuth2AuthorizedClientService authorizedClientService) { this.authorizedClientService = authorizedClientService; } @GetMapping("/resource") public ResponseEntity<String> getResource(OAuth2AuthenticationToken authentication) { OAuth2AuthorizedClient authorizedClient = authorizedClientService.loadAuthorizedClient( authentication.getAuthorizedClientRegistrationId(), authentication.getName() ); HttpHeaders headers = new HttpHeaders(); headers.setBearerAuth(authorizedClient.getAccessToken().getTokenValue()); HttpEntity<String> entity = new HttpEntity<>(headers); ResponseEntity<String> response = new RestTemplate().exchange( "http://localhost:8081/resource", HttpMethod.GET, entity, String.class ); return response; }
- Buat pelayan sumber:
ResourceController kelas awam {
@GetMapping("/resource") public ResponseEntity<String> getResource() { return ResponseEntity.ok("resource"); }
- Sahkan token akses:
@EnableResourceServer
kelas awam ResourceServerConfig memanjangkan ResourceServerConfigurerAdapter {
rr
- Dalam artikel ini, kami memperkenalkan proses protokol OAuth2 dan memberikan contoh berdasarkan rangka kerja Java dan Spring. Dengan menggunakan OAuth2, kami boleh membina API yang lebih selamat dan melindungi maklumat sensitif pengguna daripada dibocorkan. Dalam pembangunan API, kita harus sentiasa memberi perhatian kepada keselamatan untuk melindungi data pengguna dan sumber aplikasi.
Atas ialah kandungan terperinci Pembangunan bahagian belakang Java: Membina API selamat berdasarkan OAuth2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4

Spring Boot memudahkan penciptaan aplikasi Java yang mantap, berskala, dan siap pengeluaran, merevolusi pembangunan Java. Pendekatan "Konvensyen Lebih Konfigurasi", yang wujud pada ekosistem musim bunga, meminimumkan persediaan manual, Allo
