Condivisione della tecnologia

Integra la soluzione Single Sign-On nel progetto Spring Boot

2024-07-12

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

Integra la soluzione Single Sign-On nel progetto Spring Boot

Ciao a tutti, sono l'editore di Weizhuan Taoke System 3.0 e sono anche un programmatore che non indossa mutandoni in inverno, ma deve comunque essere fresco quando fa freddo!

Nelle moderne applicazioni aziendali, le soluzioni Single Sign-On (SSO) sono tecnologie chiave per garantire che gli utenti possano accedere senza problemi e accedere a più applicazioni. Questo articolo introdurrà in dettaglio come integrare una soluzione Single Sign-On in un progetto Spring Boot per migliorare l'esperienza utente e la sicurezza del sistema.

1. Scegli una soluzione Single Sign-On

Prima di poter integrare il Single Sign-On, è necessario scegliere una soluzione Single Sign-On adatta. Le opzioni comuni includono soluzioni basate su OAuth2 (come Spring Security OAuth o Spring Security + OAuth2 Client) e l'uso di autorità di autenticazione integrate (come Keycloak). Di seguito viene utilizzato Spring Security + OAuth2 Client come esempio illustrativo.

2. Configurare il client OAuth2

Nel progetto Spring Boot possiamo implementare la funzione single sign-on configurando Spring Security e OAuth2 Client. Ecco un semplice esempio di configurazione:

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. Server di autenticazione integrato

Se scegli di utilizzare un'autorità di certificazione integrata, come Keycloak, puoi integrarla seguendo questi passaggi:

  • Configura Keycloak Server e crea Realm e Client;
  • Configurare Keycloak Adapter nel progetto Spring Boot;
  • Configura Spring Security per utilizzare Keycloak come provider di autenticazione.

4. Implementare il Single Sign-On

Una volta configurato nel progetto, gli utenti potranno autenticarsi utilizzando le proprie credenziali accedendo a qualsiasi applicazione. Il sistema indirizzerà automaticamente l'utente all'autorità di certificazione per autenticarsi e ottenere l'autorizzazione, quindi reindirizzarlo all'applicazione originale.

Insomma

Questo articolo descrive come integrare una soluzione Single Sign-On in un progetto Spring Boot, fornisce una semplice configurazione di esempio basata su OAuth2 e menziona l'opzione di integrazione di un centro di certificazione. Attraverso questi passaggi, gli sviluppatori possono facilmente implementare funzioni di autenticazione e autorizzazione degli utenti sicure ed efficienti.

Prodotto dall'editore di Micro-earning Taoke System 3.0, deve essere un prodotto di alta qualità. Si prega di indicare la fonte in caso di ristampa!