Dengan pembangunan perisian moden dan populariti aplikasi, semakin banyak permintaan yang memerlukan pengesahan identiti dan kebenaran. Teknologi OAuth menyediakan penyelesaian untuk permintaan ini. Dalam pembangunan API Java, teknologi OAuth boleh digunakan untuk menyokong berbilang senario pengesahan dan kebenaran. Artikel ini akan memperkenalkan prinsip asas OAuth dan aplikasi khususnya dalam pembangunan API Java.
Pemilik sumber merujuk kepada semua orang atau entiti yang boleh mengakses pelayan sumber; menyimpan maklumat pengesahan Dan pelayan yang menyediakan token akses adalah pelayan yang menyimpan data sebenar dan mengesahkan akses pelanggan melalui token.
Langkah asas proses OAuth adalah seperti berikut:
Langkah 1: Pelanggan meminta kebenaran daripada pemilik sumber. Permintaan termasuk mengenal pasti pelanggan, jenis kebenaran yang diperlukan, skop dan URI halauan biasa termasuk "kod kebenaran" dan "kredential kata laluan pemilik sumber Skop merujuk kepada skop kebenaran pemilik sumber itu dalam URI digunakan untuk menghantar sumber selepas kebenaran daripada pemilik.
Langkah 2: Pemilik sumber membenarkan pelanggan. Ini boleh dilakukan dengan mengeluarkan token akses kepada pelanggan, atau dengan memberi kebenaran kepada pelanggan secara langsung dalam penyemak imbas web. Untuk beberapa permintaan, mungkin perlu meminta dan mendapatkan bimbingan daripada pemilik sumber.
Langkah 3: Pelanggan menggunakan token akses kebenaran untuk meminta token daripada pelayan kebenaran. Pelanggan memberikan token akses identiti dan kebenarannya sendiri sebagai parameter.
Langkah 4: Benarkan pelayan untuk mengesahkan klien dan meluluskan permintaan. Jika permintaan itu sah, pelayan kebenaran mengeluarkan token akses kepada klien.
Langkah 5: Pelanggan menggunakan token untuk meminta sumber yang dilindungi daripada pelayan sumber. Pelanggan melepasi identiti dan tokennya sendiri sebagai parameter.
Langkah 6: Jika token itu sah dan pelanggan diberi kuasa untuk mengakses sumber yang dilindungi, pelayan sumber bertindak balas kepada permintaan tersebut.
Pertama, kita perlu menambah kebergantungan untuk Spring Security dan Spring OAuth2. Ini boleh dilakukan dengan koordinat Maven berikut:
b4b38e33757a6497aa8690936b905cc1
<groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.6.RELEASE</version>
09a0e22e5aaafd848ae04665be625b91
Kemudian, kita perlu menyediakan konfigurasi kebenaran pelayan. Berikut ialah contoh konfigurasi asas:
@Configuration
@EnableAuthorizationServer
kelas awam AuthorizationServerConfig memanjangkan AuthorizationServerConfigurerAdapter {
@Autowired private DataSource dataSource; @Autowired private AuthenticationManager authenticationManager; @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.jdbc(dataSource); } @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { endpoints.authenticationManager(authenticationManager).tokenStore(tokenStore()); } @Bean public TokenStore tokenStore() { return new JdbcTokenStore(dataSource); }
}
Dalam konfigurasi ini Pelayan kebenaran OAuth2 menggunakan anotasi @EnableAuthorizationServer. Kami menyediakan perkhidmatan butiran pelanggan untuk mendapatkan butiran pelanggan menggunakan jdbcTemplate. Kami juga perlu menyediakan pengurus pengesahan dan storan token.
Seterusnya, kita perlu menyediakan konfigurasi pelayan sumber. Berikut ialah contoh konfigurasi asas:
@Configuration
@EnableResourceServer
kelas awam ResourceServerConfig memanjangkan ResourceServerConfigurerAdapter {
@Override public void configure(HttpSecurity http) throws Exception { http.csrf().disable().anonymous().disable().authorizeRequests().antMatchers("/api/**").authenticated(); } @Override public void configure(ResourceServerSecurityConfigurer resources) { resources.resourceId("api"); }
}
Dalam konfigurasi ini pelayan sumber OAuth2 menggunakan anotasi @EnableResourceServer. Kami menggunakan kaedah konfigurasi untuk mengkonfigurasi keselamatan HTTP untuk melindungi sumber. Kami menggunakan kaedah resourceId untuk menentukan ID untuk pelayan sumber.
Atas ialah kandungan terperinci Menggunakan OAuth untuk pengesahan dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!