[Spring Security] Form Login 인증방식

WebSecurityConfigurerAdapter

  • WebSecurityConfigurerAdapter 을 상속받고 configure를 오버라이드하여 사용한다.

WebSecurityConfigurerAdapter - configure

protected void configure(HttpSecurity http) throws Exception {
        this.logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");
        http.authorizeRequests((requests) -> {
            ((AuthorizedUrl)requests.anyRequest()).authenticated();
        });
        http.formLogin();
        http.httpBasic();
    }

Form Login에 사용되는 옵션

http.formLogin() : Form 로그인 인증 기능이 작동함

protected void configure(HttpSecurity http) throws Exception {
     http.formLogin()
                .loginPage(“/login.html")                   // 사용자 정의 로그인 페이지
                .defaultSuccessUrl("/home)                // 로그인 성공 후 이동 페이지
             .failureUrl("/login.html?error=true“)        // 로그인 실패 후 이동 페이지
                .usernameParameter("username")            // 아이디 파라미터명 설정
                .passwordParameter(“password”)            // 패스워드 파라미터명 설정
                .loginProcessingUrl(“/login")            // 로그인 Form Action Url
                .successHandler(loginSuccessHandler())        // 로그인 성공 후 핸들러
                .failureHandler(loginFailureHandler())        // 로그인 실패 후 핸들러
}

예제코드

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private final UserDetailsService userDetailsService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //인가 정책
        http
                .authorizeRequests()
                .anyRequest().authenticated();

        //인증 정책
        http
                .formLogin()
                ;

        http
                .sessionManagement()
                .maximumSessions(1)
                .maxSessionsPreventsLogin(false)
                ;


    }
}

댓글

Designed by JB FACTORY