Partage de technologie

Intégrer une solution d'authentification unique dans le projet Spring Boot

2024-07-12

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

Intégrer une solution d'authentification unique dans le projet Spring Boot

Bonjour à tous, je suis l'éditeur de Weizhuan Taoke System 3.0, et je suis aussi un programmeur qui ne porte pas de caleçon long en hiver, mais qui doit quand même être au frais par temps froid !

Dans les applications d'entreprise modernes, les solutions d'authentification unique (SSO) sont des technologies clés pour garantir que les utilisateurs peuvent se connecter et accéder de manière transparente à plusieurs applications. Cet article présentera en détail comment intégrer une solution d'authentification unique dans un projet Spring Boot pour améliorer l'expérience utilisateur et la sécurité du système.

1. Choisissez une solution d'authentification unique

Avant de pouvoir intégrer l’authentification unique, vous devez d’abord choisir une solution d’authentification unique adaptée. Les options courantes incluent des solutions basées sur OAuth2 (telles que Spring Security OAuth ou Spring Security + OAuth2 Client) et l'utilisation d'autorités d'authentification intégrées (telles que Keycloak). Ce qui suit utilise Spring Security + OAuth2 Client comme exemple pour illustrer.

2. Configurer le client OAuth2

Dans le projet Spring Boot, nous pouvons implémenter la fonction d'authentification unique en configurant Spring Security et OAuth2 Client. Voici un exemple de configuration 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. Serveur d'authentification intégré

Si vous choisissez d'utiliser une autorité de certification intégrée, telle que Keycloak, vous pouvez l'intégrer en suivant ces étapes :

  • Configurez Keycloak Server et créez un domaine et un client ;
  • Configurez l'adaptateur Keycloak dans le projet Spring Boot ;
  • Configurez Spring Security pour utiliser Keycloak comme fournisseur d'authentification.

4. Mettre en œuvre l'authentification unique

Une fois configurés dans le projet, les utilisateurs peuvent se connecter à l'aide de leurs informations d'identification en accédant à n'importe quelle application. Le système dirigera automatiquement l'utilisateur vers l'autorité de certification pour s'authentifier et obtenir une autorisation, puis le redirigera vers l'application d'origine.

en conclusion

Cet article décrit comment intégrer une solution d'authentification unique dans un projet Spring Boot, fournit un exemple de configuration simple basé sur OAuth2 et mentionne la possibilité d'intégrer un centre de certification. Grâce à ces étapes, les développeurs peuvent facilement mettre en œuvre des fonctions d’authentification et d’autorisation des utilisateurs sécurisées et efficaces.

Produit par l'éditeur de Micro-earning Taoke System 3.0, il doit s'agir d'un produit de haute qualité. Veuillez indiquer la source lors de la réimpression !