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

WBOY
WBOYasal
2023-09-20 13:06:111160semak imbas

如何使用Java开发一个基于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:

  1. JDK 1.8 dan ke atas
  2. Maven 3.0 dan ke atas
  3. Development
  4. Development
Development;

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}

Dalam konfigurasi di atas, {your-client-id}, {your-client-secret}, {authorization- uri }, {token-uri}, {user-info-uri}, {redirect-uri} dan {scope-list} perlu diganti dengan nilai sebenar masing-masing.

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.

🎜Kesimpulan: 🎜Artikel ini memperkenalkan cara menggunakan Java untuk membangunkan sistem log masuk tunggal berdasarkan Spring Security OAuth2 dan menyediakan contoh kod khusus. Dengan menggunakan sistem log masuk tunggal, pengguna boleh mengakses berbilang tapak web dan aplikasi dengan mudah tanpa perlu membuat pengesahan berulang kali. Saya harap artikel ini dapat membantu pembaca memahami dengan lebih baik dan menggunakan pengetahuan berkaitan Spring Security OAuth2. 🎜

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!

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