전공영역 공부 기록

스프링시큐리티 인메모리 사용자

악분 2021. 9. 6. 23:45
반응형

인메모리 사용자란?

스프링시큐리티가 실행 될 때 사용자를 생성하고, 애플리케이션이 종료되면 삭제하는 사용자를 말합니다. 말 그대로 메모리에 사용자가 저장되어 프로그램이 종료되면 사용자는 없어집니다. 주로 테스트 목적으로 사용하기 적합합니다.

 

구현

인메모리 사용자 설정은 여러가지 방법이 있습니다. 그 방법 중 스프링공식문서에서 한 예제를 참고하여 구현하고자 합니다.

 

스프링 공식문서([1])에 친절히 예제가 설명되어 있습니다. 스프링시큐리티 WebSecurityConfigurerAdapter를 상속해서 configure(AuthenticationManagerBuilder auth)를 오버라이딩하면 됩니다. 

 

아래 예제는 계정 aaa, bbb, ccc를 만들고 각각 비밀번호를 password로 설정합니다. 비밀번호를 평문으로 저장하기 위해서 {noop} prefix가 필요합니다.

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                // "/a"api 요청은 모두 허용하고 나머지는 인증요구
                .authorizeRequests()
                    .antMatchers("/a").permitAll()
                    .anyRequest().authenticated()
                    .and()
                // 로그인 페이지는 모두 허용
                .formLogin()
                    .permitAll()
                    .and()
                //  로그아웃 페이지는 모두 허용
                .logout()
                    .permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("aaa").password("{noop}password").roles("ADMIN");
        auth.inMemoryAuthentication().withUser("bbb").password("{noop}password").roles("ADMIN");
        auth.inMemoryAuthentication().withUser("ccc").password("{noop}password").roles("ADMIN");
    }
}

 

참고자료

[1] 공식문서: https://docs.spring.io/spring-security/site/docs/4.1.3.RELEASE/reference/htmlsingle/#jc-authentication-inmememory

반응형