spring boot 환경에서는 application.yml에서도 몇몇 설정이 가능하지만 디테일한 설정은 하기 힘들기 때문에 security 전용 Configuration Class에 security option 을 setting 하는게 좋습니다.
스프링시큐리티 Configuration Class를 작성하기 위해서는 WebSecurityConfigurerAdapter를 상속하여 클래스를 생성하고 @EnableWebSecurity 어노테이션을 추가합니다.
스프링시큐리티의 각종 설정은 HttpSecurity로 한다 WebSecurity 스프링시큐리티 앞단의 설정들을 하는 객체이므로 HttpSecurity 설정한 스프링시큐리티 설정이 오버라이드 되는 설정이 있는 경우도 있다.
스프링시큐리티의 각종 설정은 대부분 HttpSecurity로 진행합니다.
-리소스(URL) 접근 권한 설정
-인증 전체 흐름에 필요한 Login, Logout 페이지 인증완료 후 페이지 인증 실패 시 이동페이지 등등 설정
-인증 로직을 커스텀하기위한 커스텀 필터 설정
-기타 csrf, 강제 https 호출 등등 거의 모든 스프링시큐리티의 설정
@EnableWebSecurity
public class testSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests() /* 리소스 처리 */
.antMatchers("/web-resources/**", "/actuator/**").permitAll()
.antMatchers("/admin/**").hasAnyRole("ADMIN")
.antMatchers("/order/**").hasAnyRole("USER")
.anyRequest().authenticated()
.and() /* and: 로그인처리 */
.formLogin()
.loginPage("/")
.loginProcessingUrl("/login")
.usernameParameter("userId")
.passwordParameter("password")
.successHandler(AuthenticationSuccessHandler())
.failureHandler(AuthenticationFailureHandler())
.permitAll();
}
}
[로그인처리]