Rumah  >  Artikel  >  Java  >  Menggunakan OAuth untuk pengesahan dalam pembangunan API Java

Menggunakan OAuth untuk pengesahan dalam pembangunan API Java

WBOY
WBOYasal
2023-06-18 09:59:321777semak imbas

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.

  1. Pengenalan OAuth
    OAuth (Kebenaran Terbuka) ialah standard terbuka untuk kebenaran antara pemilik sumber dan penyedia perkhidmatan. OAuth membenarkan akses kepada data perkhidmatan lain bagi pihak pengguna atau perkhidmatan tanpa memberikan bukti kelayakan logik pelawat, seperti nama pengguna dan kata laluan. Ia adalah penyelesaian yang selamat, elegan dan berguna yang menyokong penyepaduan lancar antara aplikasi yang berbeza.
  2. Protokol OAuth
    Inti protokol OAuth ialah proses kebenaran. Proses kebenaran OAuth melibatkan empat peserta utama: pemilik sumber, klien, pelayan kebenaran dan pelayan sumber. Kebanyakan aplikasi OAuth boleh dilengkapkan oleh pelakon ini.

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.

  1. Menggunakan OAuth dalam Pembangunan API Java
    Pembangunan API Java selalunya memerlukan pengendalian dan pengurusan pengesahan dan kebenaran pengguna. Teknologi OAuth sangat berguna untuk tujuan ini. Dalam contoh berikut, kami akan menggunakan Spring Security dan Spring OAuth2.

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.

  1. Kesimpulan
    Teknologi OAuth ialah proses kebenaran berkuasa yang boleh digunakan untuk menyokong penyepaduan yang lancar antara aplikasi yang berbeza. Dalam pembangunan API Java, OAuth boleh digunakan untuk pengesahan dan kebenaran untuk memastikan akses yang betul kepada sumber yang dilindungi dan melindungi keselamatan pengguna. Dengan menggunakan Spring Security dan Spring OAuth2, kami boleh melaksanakan fungsi asas teknologi OAuth dengan mudah.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn