ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Security : Web Ignore
    Spring 2023. 1. 19. 00:56

    Spring Security는 기본적으로 모든 자원에 접근하는 요청에 대해서 인증, 인가를 확인해서 자원에 접근할 수 있는 경우에만 값을 내려준다. 인증, 인가를 모두 검사하는 것이 안전하지만 필요하지 않는 경우도 있다.

     

    특정 URL에 접근했을 때, View가 랜더링 되는 시점에 URL에 접근할 수 있다는 인가를 받으면 그 화면이 바로 랜더링이 되면 된다.

    그렇지만 스프링 시큐리티는 기본적으로 모든 접근에 대해서 인증, 인가를 검색하기 때문에 해당 URL을 랜더링 하는데 필요한 정적인 파일 (CSS, HTML, JS) 파일들을 모두 다시 한번 검사한다.

     

    필요 없는 검사가 반복될 수 있기 때문에 정적인 파일에 한해서 검사를 건너뛸 수 있도록 처리해주어야 한다.

    Spring Security 에서는 Web Ignore을 이용한다.

    configure 메서드를 오버라이드하여 web Ignore 설정을 하면 된다.

     

    @Override
    public void configure(WebSecurity web) throws Exception {
      web.ignoring().requestMatchers(PathRequest.toStaticResource().atCommonLocations());
    }

     

    대상은 PathRequest.StaticResourceLocation 에서 확인해볼 수 있다.

    ENum 클래스로, CSS JAVA_SCRIPT, IMAGES, WEB_JARS, FAVICON 등이 포함되어있다.

    작성된 경로로 요청이 올 경우, ignoring() 메소드를 통해 검사가 무시된다.

     

    web Ignore로 설정하지 않을 시 Spring Security에 걸리며 오류가 발생한다.

    나는 추가적으로 /node_modules/** 하위 파일들도 걸리지 않게 추가해주었다.

    @Override
    public void configure(WebSecurity web) throws Exception {
      web.ignoring()
      .mvcMatchers("/node_modules/**")
      .requestMatchers(PathRequest.toStaticResource().atCommonLocations());
    }

     

    참고

    https://ojt90902.tistory.com/843

    'Spring' 카테고리의 다른 글

    Spring의 @EventListener  (0) 2023.01.30
    Entity와 DTO 분리하기  (0) 2023.01.25
    Setter 사용을 지양해야 하는 이유  (0) 2023.01.19
    PasswordEncoder, BcryptPasswordEncoder  (0) 2023.01.19
    @EqualsAndHashCode, equals, hashCode  (0) 2023.01.18
Designed by Tistory.