Compartir tecnología

Integre la solución de inicio de sesión único en el proyecto Spring Boot

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Integre la solución de inicio de sesión único en el proyecto Spring Boot

Hola a todos, soy el editor de Weizhuan Taoke System 3.0 y también soy un programador que no usa calzoncillos largos en invierno, ¡pero aún así tiene que estar fresco en climas fríos!

En las aplicaciones empresariales modernas, las soluciones de inicio de sesión único (SSO) son tecnologías clave para garantizar que los usuarios puedan iniciar sesión y acceder sin problemas a múltiples aplicaciones. Este artículo presentará en detalle cómo integrar una solución de inicio de sesión único en un proyecto Spring Boot para mejorar la experiencia del usuario y la seguridad del sistema.

1. Elija una solución de inicio de sesión único

Antes de poder integrar el inicio de sesión único, primero debe elegir una solución de inicio de sesión único adecuada. Las opciones comunes incluyen soluciones basadas en OAuth2 (como Spring Security OAuth o Spring Security + OAuth2 Client) y el uso de autoridades de autenticación integradas (como Keycloak). A continuación se utiliza Spring Security + OAuth2 Client como ejemplo para ilustrar.

2. Configurar el cliente OAuth2

En el proyecto Spring Boot, podemos implementar la función de inicio de sesión único configurando Spring Security y OAuth2 Client. Aquí hay un ejemplo de configuración simple:

package cn.juwatech.taokua.system.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
import org.springframework.security.oauth2.core.AuthorizationGrantType;
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
                .and()
            .oauth2Login()
                .defaultSuccessUrl("/dashboard")
                .and()
            .logout()
                .logoutSuccessUrl("/")
                .permitAll();
    }

    @Bean
    public ClientRegistrationRepository clientRegistrationRepository() {
        return new InMemoryClientRegistrationRepository(githubClientRegistration());
    }

    private ClientRegistration githubClientRegistration() {
        return ClientRegistration.withRegistrationId("github")
                .clientId("your-client-id")
                .clientSecret("your-client-secret")
                .clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
                .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
                .redirectUriTemplate("{baseUrl}/login/oauth2/code/{registrationId}")
                .scope("read:user")
                .authorizationUri("https://github.com/login/oauth/authorize")
                .tokenUri("https://github.com/login/oauth/access_token")
                .userInfoUri("https://api.github.com/user")
                .userNameAttributeName("id")
                .clientName("GitHub")
                .build();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

3. Servidor de autenticación integrado

Si elige utilizar una autoridad de certificación integrada, como Keycloak, puede integrarla siguiendo estos pasos:

  • Configure Keycloak Server y cree Realm y Client;
  • Configure el adaptador Keycloak en el proyecto Spring Boot;
  • Configure Spring Security para usar Keycloak como proveedor de autenticación.

4. Implementar el inicio de sesión único

Una vez configurado en el proyecto, los usuarios pueden iniciar sesión con sus credenciales accediendo a cualquier aplicación. El sistema dirigirá automáticamente al usuario a la autoridad de certificación para autenticarse y obtener autorización, y luego lo redirigirá nuevamente a la aplicación original.

en conclusión

Este artículo describe cómo integrar una solución de inicio de sesión único en un proyecto Spring Boot, proporciona un ejemplo de configuración simple basado en OAuth2 y menciona la opción de integrar un centro de certificación. A través de estos pasos, los desarrolladores pueden implementar fácilmente funciones de autorización y autenticación de usuarios seguras y eficientes.

Producido por el editor de Micro-earning Taoke System 3.0, debe ser un producto de alta calidad. ¡Indique la fuente al reimprimir!