Heim  >  Artikel  >  Java  >  So entwickeln Sie mit Java ein Single-Sign-On-System basierend auf Spring Security OAuth2

So entwickeln Sie mit Java ein Single-Sign-On-System basierend auf Spring Security OAuth2

WBOY
WBOYOriginal
2023-09-20 13:06:111089Durchsuche

如何使用Java开发一个基于Spring Security OAuth2的单点登录系统

So verwenden Sie Java, um ein Single-Sign-On-System basierend auf Spring Security OAuth2 zu entwickeln

Einführung:
Mit der rasanten Entwicklung des Internets erfordern immer mehr Websites und Anwendungen, dass sich Benutzer anmelden, Benutzer jedoch nicht Wenn Sie dies tun möchten, merken Sie sich für jede Website oder Anwendung ein Konto und ein Passwort. Das Single-Sign-On-System (SSO) kann dieses Problem lösen und ermöglicht Benutzern den Zugriff auf mehrere Websites und Anwendungen ohne wiederholte Authentifizierung nach einmaliger Anmeldung. In diesem Artikel wird erläutert, wie Sie mithilfe von Java ein Single-Sign-On-System basierend auf Spring Security OAuth2 entwickeln, und es werden spezifische Codebeispiele bereitgestellt.

1. Vorbereitung:
Bevor wir mit der Entwicklung beginnen, müssen wir einige grundlegende Tools und Umgebungen vorbereiten:

    JDK 1.8 und höher;
  1. Entwicklungs-IDE, wie Eclipse, IntelliJ IDEA usw
  2. Eine verfügbare MySQL-Datenbank.
  3. 2. Erstellen Sie ein Spring Boot-Projekt:
  4. Zuerst müssen wir ein Spring Boot-Projekt erstellen und die erforderlichen Abhängigkeiten hinzufügen. Öffnen Sie Eclipse oder IntelliJ IDEA, klicken Sie auf „Neu“, wählen Sie „Spring Starter Project“ und geben Sie die erforderlichen Informationen ein (z. B. Projektname, Paketname usw.). Fügen Sie dann die folgenden Abhängigkeiten zur pom.xml-Datei des Projekts hinzu:
  5. <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. Konfigurieren Sie Spring Security OAuth2:

Als nächstes müssen wir das Spring Security OAuth2-Modul konfigurieren. Erstellen Sie eine Datei mit dem Namen application.yml im Verzeichnis src/main/resources und fügen Sie die folgenden Konfigurationsinformationen hinzu:

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}

In der obigen Konfiguration: {your-client-id}, {your-client-secret}, {authorization-uri }, {token-uri}, {user-info-uri}, {redirect-uri} und {scope-list} müssen jeweils durch tatsächliche Werte ersetzt werden.


4. Erstellen Sie eine Anmeldeseite:

Als nächstes müssen wir eine Anmeldeseite für die Benutzeranmeldung erstellen. Erstellen Sie eine Datei mit dem Namen login.html im Verzeichnis src/main/resources/templates und fügen Sie den folgenden Code hinzu:

<!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. Erstellen Sie einen Authentifizierungs- und Autorisierungsserver:

Als nächstes müssen wir einen Authentifizierungsserver (Autorisierungsserver) erstellen und ein Autorisierungsserver (Ressourcenserver) zur Verwaltung der Benutzerauthentifizierung und -autorisierung. Erstellen Sie eine Java-Klasse namens SecurityConfig und fügen Sie den folgenden Code hinzu:

@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. Erstellen Sie einen Ressourcenserver:

Als nächstes müssen wir einen Ressourcenserver erstellen, um unsere API zu schützen. Erstellen Sie eine Java-Klasse mit dem Namen ResourceServerConfig und fügen Sie den folgenden Code hinzu:

@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
   
   @Override
   public void configure(HttpSecurity http) throws Exception {
      http.authorizeRequests().antMatchers("/api/**").authenticated();
   }

}

7. Single Sign-On testen:

An diesem Punkt haben wir die Entwicklung des Single Sign-On-Systems abgeschlossen. Wir können die Anwendung ausführen und uns anmelden, indem wir über den Browser auf die Anmeldeseite (http://localhost:8080/login) zugreifen. Nach erfolgreicher Anmeldung können wir auf andere geschützte Ressourcen zugreifen, indem wir im Anforderungsheader ein Zugriffstoken hinzufügen.

Fazit:

Dieser Artikel stellt die Verwendung von Java zur Entwicklung eines Single-Sign-On-Systems basierend auf Spring Security OAuth2 vor und bietet spezifische Codebeispiele. Durch die Verwendung eines Single-Sign-On-Systems können Benutzer problemlos auf mehrere Websites und Anwendungen zugreifen, ohne sich wiederholt authentifizieren zu müssen. Ich hoffe, dass dieser Artikel den Lesern helfen kann, das relevante Wissen über Spring Security OAuth2 besser zu verstehen und anzuwenden.

Das obige ist der detaillierte Inhalt vonSo entwickeln Sie mit Java ein Single-Sign-On-System basierend auf Spring Security OAuth2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn