기술나눔

Spring Boot 프로젝트에 Single Sign-On 솔루션 통합

2024-07-12

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

Spring Boot 프로젝트에 Single Sign-On 솔루션 통합

안녕하세요 여러분, 저는 Weizhuan Taoke System 3.0의 편집자이자 겨울에는 긴 내복을 입지 않지만 추운 날씨에는 시원해야 하는 프로그래머이기도 합니다!

최신 엔터프라이즈 애플리케이션에서 SSO(Single Sign-On) 솔루션은 사용자가 원활하게 로그인하고 여러 애플리케이션에 액세스할 수 있도록 보장하는 핵심 기술입니다. 이 기사에서는 Spring Boot 프로젝트에 Single Sign-On 솔루션을 통합하여 사용자 경험과 시스템 보안을 향상시키는 방법을 자세히 소개합니다.

1. Single Sign-On 솔루션 선택

Single Sign-On을 통합하려면 먼저 적합한 Single Sign-On 솔루션을 선택해야 합니다. 일반적인 옵션에는 OAuth2 기반 솔루션(예: Spring Security OAuth 또는 Spring Security + OAuth2 클라이언트) 및 통합 인증 기관(예: Keycloak) 사용이 포함됩니다. 다음은 Spring Security + OAuth2 클라이언트를 예로 들어 설명합니다.

2. OAuth2 클라이언트 구성

Spring Boot 프로젝트에서는 Spring Security와 OAuth2 Client를 구성하여 Single Sign-On 기능을 구현할 수 있습니다. 다음은 간단한 구성 예입니다.

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. 통합인증서버

Keycloak과 같은 통합 인증 기관을 사용하기로 선택한 경우 다음 단계에 따라 통합할 수 있습니다.

  • Keycloak 서버를 구성하고 영역 및 클라이언트를 생성합니다.
  • Spring Boot 프로젝트에서 Keycloak 어댑터를 구성합니다.
  • Keycloak을 인증 공급자로 사용하도록 Spring Security를 ​​구성합니다.

4. 싱글 사인온(SSO) 구현

프로젝트에서 구성되면 사용자는 모든 애플리케이션에 액세스하여 자격 증명을 사용하여 로그인할 수 있습니다. 시스템은 자동으로 사용자를 인증 기관으로 연결하여 인증하고 권한을 얻은 다음 원래 응용 프로그램으로 다시 리디렉션합니다.

결론적으로

이 문서에서는 Spring Boot 프로젝트에 Single Sign-On 솔루션을 통합하는 방법을 설명하고 OAuth2를 기반으로 하는 간단한 구성 예시를 제공하며 인증 센터 통합 옵션에 대해 언급합니다. 이러한 단계를 통해 개발자는 안전하고 효율적인 사용자 인증 및 권한 부여 기능을 쉽게 구현할 수 있습니다.

소액적립 타오케시스템 3.0 편집자가 제작한 고급상품이므로 재인쇄시 출처를 꼭 밝혀주세요!