스프링 시큐리티

스프링 시큐리티(Spring Security)는 스프링 기반의 애플리케이션에서 인증과 권한 부여를 담당하는 프레임워크입니다. 스프링 시큐리티를 사용하면 다양한 인증 방식을 적용하여 보안성을 높일 수 있으며, 세밀한 권한 제어를 통해 안전한 웹 애플리케이션을 개발할 수 있습니다. 스프링 시큐리티는 스프링 프레임워크와 연동하여 사용할 수 있으며, 다양한 인증 방식과 권한 제어 기능을 제공합니다.

스프링 시큐리티는 매우 강력하고 유연한 보안 프레임워크로, 스프링 기반의 웹 애플리케이션에서는 필수적인 기술입니다. 스프링 시큐리티를 이용하여 간단하게 인증 및 권한 부여 기능을 구현할 수 있으며, 필요에 따라 세부적인 설정을 통해 보다 정교한 보안 기능을 구현할 수 있습니다.

스프링 시큐리티는 다양한 보안 기능을 제공하는데, 예를 들어 사용자 인증, 권한 부여, 보안 설정, 안전한 코딩 지침 등이 있습니다. 스프링 시큐리티를 이용하면 웹 애플리케이션에서 발생할 수 있는 다양한 보안 위협에 대해 예방하고 대응할 수 있으며, 이를 통해 안전한 웹 애플리케이션을 개발할 수 있습니다.


스프링부트에서 스프링 시큐리티를 사용하려면, 먼저 spring-boot-starter-security 의존성을 추가해야 합니다.

implementation 'org.springframework.boot:spring-boot-starter-security'

그리고 보안 설정을 위한 클래스를 작성하여 원하는 설정을 구현할 수 있습니다.

@Configuration
public class SecurityConfig {

    @Autowired
    private PrincipalDetailService principalDetailService;

    @Bean
    public BCryptPasswordEncoder encodePWD(){
        return new BCryptPasswordEncoder();
    }

    protected void configure(AuthenticationManagerBuilder auth) throws Exception{
        auth.userDetailsService(principalDetailService).passwordEncoder(encodePWD());
    }

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
        http.csrf().disable()

                .authorizeRequests()
                    .antMatchers("/", "/auth/**", "/js/**", "/css/**", "/image/**")
                    .permitAll()
                    .anyRequest()
                    .authenticated()

                .and()
                    .formLogin()
                    .loginPage("/auth/loginForm")
                    .loginProcessingUrl("/auth/loginProc")
                    .defaultSuccessUrl("/");

        return http.build();
    }

SecurityFilterChain을 사용하여 필요한 권한을 설정할 수 있습니다.

위의 예제는 모든 사용자가 "/", "/auth/**", "/js/**", "/css/**", "/image/**" 의 접근을 가능하게 하며 스프링 시큐리티 기반 login을 "/auth/loginForm" 경로에서 진행되게 합니다. 로그인 Form Action Url은 "/auth/loginProc" 경로가 됩니다.


스프링 시큐리티의 의존성을 추가하고 서버를 재시작하면 로그인 페이지에 진입합니다.

Untitled

Username의 기본값은 user입니다. Password는 서버 콘솔창에서 확인할 수 있습니다.