Nellie's Blog

[TIL-230126목] 스프링 시큐리티 공부.. 본문

회고록

[TIL-230126목] 스프링 시큐리티 공부..

Nellie Kim 2023. 1. 27. 00:45
728x90

배운점

 

1. WebSecurityConfigurerAdaptor클래스가  Deprecated된  문제를 해결해보기

시큐리티를 기본설정하는 SecurityConfig클래스는 WebSecurityConfigurerAdaptor라는 세부보안기능설정클래스를 상속받아서, configure 메소드를 오버라이딩해서 사용하는 방법으로 구현해 왔다. 그러나 이제는 사용할 수 없다.

SecurityFilterChain Bean으로 등록해서 사용해야 한다.

간단히 사용법 구/신버전을 비교해보자.

 

1. WebSecurityConfigurerAdaptor를 상속하여 cofigure메소드를 오버라이딩하는 방법

2. 직접 SecurityFilterChain , WebSecurityCostomizer를 bean으로 등록하는 방법

 

2. WebSecurity VS HttpSecurity 차이점

Spring Security는 기본적으로 모든 자원에 접근하는 요청에 대해서 인증 + 인가를 확인해서 자원에 접근할 수 있는 경우에만 값을 내려준다. 이렇게 인증 / 인가를 모두 검사하는 것이 좋을 것처럼 보이지만 필요하지 않는 경우가 있다. 예를 들어 정적인 자원들에 대한 값이다. 

 

예를 들어 특정 URL에 접근했을 때, View가 렌더링 된다고 가정해보자. 이미 URL에 접근할 수 있다는 인가를 받으면 그 화면이 바로 랜더링이 되면 된다. 그렇지만 스프링 시큐리티는 기본적으로 모든 접근에 대해서 인증/인가를 검색하기 때문에 이 URL을 랜더링 하는데 필요한 정적인 파일(CSS / HTML / JS) 파일들을 모두 다시 한번 검사한다. 

사실 이렇게 동작하게 되면 쓸데없는 일의 반복이 될 수 있기 때문에 정적인 파일에 한해서는 검사를 Skip할 수 있도록 하는 기원을 지원한다. Spring Security에서 지원하는 이 기능을 Web Ignore라고 한다. 

 

Web Ignore와 PermitAll은 같아보이지만 다르다. Web Ignore와 permitAll() 모두 인증없이 접근이 가능하도록 한다는 점에서는 같은 점이 있다. 그렇지만 이 동작 과정을 들여다보면 근본적인 차이가 있다. 

PermitAll은 인증이 필요없다고 하지만, 반드시 FilterSecurityInterceptor까지 온 다음에 DispatcherServlet으로 넘어간다. 이 말은, 비록 인증이 필요없다고 하지만 반드시 Spring Security가 제공하는 보안 필터를 거친다는 의미이다. 반대로 WebIgnore는 SpringSecurity가 제공하는 Filter를 거치지 않는다는 점이다. 

 

 

https://yeees.tistory.com/119#recentComments

 

[항해99][강의정리] Spring 심화주차(W5) - 시큐리티(Security) 총정리

[목차] 1. Spring Security 란? 2. Spring Security 주요 컴포넌트 확인하기 3. Spring Security의 Default Form Login 방식 사용해보기 4. UserDetails, UserDetailsService Custom 해보기 5. 비밀번호 암호화 이해하고 적용하기 6.

yeees.tistory.com

 

 

 

느낀점

시큐리티에 대해 이해도가 많이 생긴 것 같다. 그래도 아직 모르는 부분이 많은 것 같다. 프로젝트도 얼른 진행해야 하는데..ㅠㅠ . 정보처리기사도 공부해야해서 더 빡세게 공부해야겠다.