Comment utiliser Java pour développer un système d'authentification unique basé sur Spring Security OAuth2
Introduction :
Avec le développement rapide d'Internet, de plus en plus de sites Web et d'applications nécessitent que les utilisateurs se connectent, mais les utilisateurs ne le font pas souhaitez le faire. Mémorisez un compte et un mot de passe pour chaque site Web ou application. Le système d'authentification unique (SSO) peut résoudre ce problème, en permettant aux utilisateurs d'accéder à plusieurs sites Web et applications sans authentification répétée après s'être connectés une fois. Cet article explique comment utiliser Java pour développer un système d'authentification unique basé sur Spring Security OAuth2 et fournit des exemples de code spécifiques.
1. Préparation :
Avant de commencer le développement, nous devons préparer quelques outils et environnements de base :
<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>
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. Créer une page de connexion :
Ensuite, nous devons créer une page de connexion pour la connexion de l'utilisateur. Créez un fichier nommé login.html dans le répertoire src/main/resources/templates et ajoutez le code suivant :
<!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. Créez un serveur d'authentification et d'autorisation :
Ensuite, nous devons créer un serveur d'authentification (Authorization Server) et un serveur d'autorisation (Resource Server) pour gérer l'authentification et l'autorisation des utilisateurs. Créez une classe Java appelée SecurityConfig et ajoutez le code suivant :@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"); } }
@Configuration @EnableResourceServer @EnableGlobalMethodSecurity(prePostEnabled = true) public class ResourceServerConfig extends ResourceServerConfigurerAdapter { @Override public void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/api/**").authenticated(); } }
Conclusion :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!