Compartilhamento de tecnologia

Integrar solução de logon único no projeto Spring Boot

2024-07-12

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

Integrar solução de logon único no projeto Spring Boot

Olá a todos, sou o editor do Weizhuang Taoke System 3.0 e também sou um programador que não usa ceroulas no inverno, mas ainda precisa ser elegante no frio!

Em aplicativos empresariais modernos, as soluções de logon único (SSO) são tecnologias essenciais para garantir que os usuários possam fazer login e acessar vários aplicativos sem problemas. Este artigo apresentará em detalhes como integrar uma solução de logon único em um projeto Spring Boot para melhorar a experiência do usuário e a segurança do sistema.

1. Escolha uma solução de logon único

Antes de poder integrar o logon único, primeiro você precisa escolher uma solução de logon único adequada. As opções comuns incluem soluções baseadas em OAuth2 (como Spring Security OAuth ou Spring Security + OAuth2 Client) e o uso de autoridades de autenticação integradas (como Keycloak). A seguir, usamos Spring Security + OAuth2 Client como exemplo para ilustrar.

2. Configurar cliente OAuth2

No projeto Spring Boot, podemos implementar a função de logon único configurando Spring Security e OAuth2 Client. Aqui está um exemplo de configuração simples:

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 autenticação integrado

Se você optar por usar uma autoridade de certificação integrada, como Keycloak, poderá integrá-la seguindo estas etapas:

  • Configurar Keycloak Server e criar Realm e Client;
  • Configure o adaptador Keycloak no projeto Spring Boot;
  • Configure o Spring Security para usar Keycloak como provedor de autenticação.

4. Implementar logon único

Uma vez configurado no projeto, os usuários podem efetuar login utilizando suas credenciais acessando qualquer aplicação. O sistema direcionará automaticamente o usuário à autoridade de certificação para autenticação e obtenção de autorização e, em seguida, redirecionará de volta ao aplicativo original.

para concluir

Este artigo descreve como integrar uma solução de logon único em um projeto Spring Boot, fornece um exemplo simples de configuração baseado em OAuth2 e menciona a opção de integração de um centro de certificação. Por meio dessas etapas, os desenvolvedores podem implementar facilmente funções de autenticação e autorização de usuário seguras e eficientes.

Produzido pelo editor do Micro-earning Taoke System 3.0, deve ser um produto de alta qualidade. Indique a fonte ao reimprimir!