Spring Security 정리

SecurityFilter와 ServletFilter

이름은 똑같이 Filter이지만 Servlet에서 관리되는 Filter와 구조가 다르다.

여기서는 ServletFilter와 SecurityFilter로 구분하겠다.

 

https://docs.spring.io/spring-security/site/docs/3.0.x/reference/security-filter-chain.html

DelegateFilterProxy만 ServletFilter이다.

다른 SecurityFilter는 이 하위에서 동작한다.

 

ex) API와 웹화면이 별도의 체인 사용

SecurityFilter중 하나인 LogoutFilter의 선언부

SecurityFilter도 javax.servlet.Filter를 상속받지만 아예 다른 형태로 만드는게 혼란이 없지 않았을까 하는 생각이 든다.

 

Cors필터나 기타 인증필터를 추가해서 Security인증을 하고싶다면 ServetFilter가 아닌 SecurityFilterChain에 추가를 해야한다.

Security의 핵심인 FilterChain

https://stackoverflow.com/questions/41480102/how-spring-security-filter-chain-works

SpringSecurity JavaConfig 기본설정부분의 일부

기본적으로 셋팅되는 필터들

서로간에 강한 의존성을 가지며 순서가 중요하다.

 

FilterChain을 구동시키는 Filter만

JWT나 CORS 필터 적용이 필요하다면 Security에 올리는게 좋다.

 

RoleVoter