Rumah >Java >javaTutorial >Cara menggunakan Java untuk membangunkan sistem log masuk tunggal berdasarkan Spring Security OAuth2
Cara menggunakan Java untuk membangunkan sistem log masuk tunggal berdasarkan Spring Security OAuth2
Pengenalan:
Dengan perkembangan pesat Internet, semakin banyak tapak web dan aplikasi memerlukan pengguna untuk log masuk, tetapi pengguna tidak ingin melakukan ini Ingat akaun dan kata laluan untuk setiap tapak web atau aplikasi. Sistem Single Sign-On (SSO) boleh menyelesaikan masalah ini, membenarkan pengguna mengakses berbilang tapak web dan aplikasi tanpa pengesahan berulang selepas log masuk sekali. Artikel ini akan memperkenalkan cara menggunakan Java untuk membangunkan sistem log masuk tunggal berdasarkan Spring Security OAuth2 dan memberikan contoh kod khusus.
1. Penyediaan:
Sebelum memulakan pembangunan, kita perlu menyediakan beberapa alatan dan persekitaran asas:
Pangkalan data MySQL tersedia.
2. Buat projek Spring Boot:
Mula-mula, kita perlu mencipta projek Spring Boot dan menambah kebergantungan yang diperlukan. Buka Eclipse atau IntelliJ IDEA, klik "Baru", pilih "Spring Starter Project", dan isikan maklumat yang diperlukan (seperti nama projek, nama pakej, dll.). Kemudian, tambahkan kebergantungan berikut pada fail pom.xml projek:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.4.RELEASE</version> </dependency> <!-- 添加其他需要的依赖 --> </dependencies>
3. Konfigurasikan Spring Security OAuth2:
Seterusnya, kita perlu mengkonfigurasi modul Spring Security OAuth2. Buat fail bernama application.yml dalam direktori src/main/resources dan tambah maklumat konfigurasi berikut:spring: security: oauth2: client: registration: custom: client-id: {your-client-id} client-secret: {your-client-secret} provider: custom auth-uri: {authorization-uri} token-uri: {token-uri} user-info-uri: {user-info-uri} redirect-uri: {redirect-uri} scope: {scope-list} provider: custom: authorization-uri: {authorization-uri} token-uri: {token-uri} user-info-uri: {user-info-uri} resource: user-info-uri: {user-info-uri}
4. Buat halaman log masuk:
Seterusnya, kita perlu mencipta halaman log masuk untuk log masuk pengguna. Cipta fail bernama login.html dalam direktori src/main/resources/templates dan tambahkan kod berikut:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <h2>Login</h2> <form method="post" action="/login"> <div> <label for="username">Username:</label> <input type="text" id="username" name="username" /> </div> <div> <label for="password">Password:</label> <input type="password" id="password" name="password" /> </div> <button type="submit">Login</button> </form> </body> </html>
5. Buat pelayan pengesahan dan kebenaran:
Seterusnya, kita perlu mencipta pelayan pengesahan (Authorization Server) dan pelayan kebenaran (Resource Server) untuk mengendalikan pengesahan dan kebenaran pengguna. Buat kelas Java yang dipanggil SecurityConfig dan tambah kod berikut:
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/login").permitAll().anyRequest().authenticated() .and().formLogin().loginPage("/login").permitAll() .and().logout().logoutSuccessUrl("/login?logout").permitAll(); http.csrf().disable(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("admin").password("{noop}admin").roles("ADMIN"); } }
6. Buat pelayan sumber:
Seterusnya, kita perlu mencipta pelayan sumber untuk melindungi API kami. Buat kelas Java bernama ResourceServerConfig dan tambah kod berikut:
@Configuration @EnableResourceServer @EnableGlobalMethodSecurity(prePostEnabled = true) public class ResourceServerConfig extends ResourceServerConfigurerAdapter { @Override public void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/api/**").authenticated(); } }
7. Uji log masuk tunggal:
Pada ketika ini, kami telah menyelesaikan pembangunan sistem log masuk tunggal. Kita boleh menjalankan aplikasi dan log masuk dengan mengakses halaman log masuk (http://localhost:8080/login) melalui pelayar. Selepas log masuk berjaya, kami boleh mengakses sumber dilindungi lain dengan menambahkan Token Akses dalam pengepala permintaan.
Atas ialah kandungan terperinci Cara menggunakan Java untuk membangunkan sistem log masuk tunggal berdasarkan Spring Security OAuth2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!