(JAVA) spring security(2) - setting

lgw2236·2022년 12월 27일
0

Java

목록 보기
6/8
post-thumbnail

Spring Security 설정

spring boot 환경에서는 application.yml에서도 몇몇 설정이 가능하지만 디테일한 설정은 하기 힘들기 때문에 security 전용 Configuration Class에 security option 을 setting 하는게 좋습니다.

1.Security Configuration Class

스프링시큐리티 Configuration Class를 작성하기 위해서는 WebSecurityConfigurerAdapter를 상속하여 클래스를 생성하고 @EnableWebSecurity 어노테이션을 추가합니다.

WebSecurity 설정

스프링시큐리티의 각종 설정은 HttpSecurity로 한다 WebSecurity 스프링시큐리티 앞단의 설정들을 하는 객체이므로 HttpSecurity 설정한 스프링시큐리티 설정이 오버라이드 되는 설정이 있는 경우도 있다.

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();
    }
}    
  • antMatchers: 리소스에 대한 권한설정
  • permitAll : antMatchers 설정한 리소스의 접근을 인증절차 없이 허용
  • hasAnyRole : 모든 리소스를 의미하며 접근허용 리소스 및 인증후 특정 레벨의 권한을 가진 사용자만 접근가능한 리소스를 설정하고 그외 나머지 리소스들은 무조건 인증을 완료해야 접근이 가능하다는 의미입니다.

[로그인처리]

  • formLogin: 통상적인 로그인 프로세스, 로그인 폼 페이지와 로그인 처리 성공 실패 등을 사용하겠다는 의미입니다.
  • loginPage: 시큐리티에서 제공해주는 기본 로그인 page 가 아닌 사용자가 직접 custom한 page를 세팅합니다. default url인 /login 로 설정하면 기본적으로 시큐리티에서 제공하는 로그인 페이지를 사용하게 됩니다.
  • loginProcessingUrl: 로그인 화면의 FORM에서 아이디와 비번을 입력하고 확인을 클릭하면 “/login”을 호출 하게 되었들 때 인증처리하는 필터가 호출되어 아이디 비번을 받아와 인증처리가 수행되게 됩니다. 즉 UsernamePasswordAuthenticationFilter가 실행됩니다.
  • defaultSuccessUrl: 정상적으로 인증성공 했을 경우 redirect하는 페이지를 설정합니다.
  • successHandler: 정상적인증 성공 후 별도의 처리가 필요한경우 위의 예시처럼 커스텀 핸들러를 생성하여 등록할 수 있습니다.
  • failureHandler: 인증 실패 후 별도의 처리가 필요한경우 위의 예시처럼 커스텀 핸들러를 생성하여 등록할 수 있습니다.
profile
어제보다 오늘 더

0개의 댓글