스프링 시큐리티에 대해 이해하기 위해서는 기본적으로 필터에 대한 이해가 필요하다.
스프링에서는 client로부터 HTTP 요청이 들어오면 Servlet에 도달하기 전 필터를 거친다.
이 필터는 하나일 수도 있고 여러개일 수도 있다. (원하는 만큼 필터 추가 가능하다.)
하나의 필터를 통과하면 다음 필터로, 그 다음 필터를 통과하면 또 다음 필터로 넘어가는 형태이다.
이를 필터 체인이라고 한다.
HTTP 요청 -> WAS -> 필터 1 -> 필터 2 -> ... -> 서블릿 -> 컨트롤러
HTTP 요청 -> WAS -> 필터 1 -> 필터 2(적절하지 않은 요청, 서블릿 호출 X)
스프링 시큐리티는 여기서 DelegatingFilterProxy라는 서블릿 필터를 만들어서 메인 필터체인에 끼워 넣는다.
그리고 해당 필터의 하위에 시큐리티 필터 체인 그룹을 등록한다.
시큐리티의 작동방식은 다음과 같다.
1. 먼저 필터를 만난다. (이 안에는 많은 필터들이 들어있지만 전부 짚고 가지는 않겠다.)
이 필터들 중 UsernamePasswordAuthenticationFilter를 만나면
2. UsernamePasswordAuthenticationFilter는 UsernamePasswordAuthenticationToken을 만들어서
3. AuthenticationManager(구현체 ProviderManager)과 연결한다.
'Spring > 이론' 카테고리의 다른 글
[JPA] JPQL 문법과 기능 (0) | 2023.07.26 |
---|---|
JPA - 값 타입 (0) | 2023.07.07 |
JPA - 영속성 전이, 고아 객체 (0) | 2023.06.29 |
JPA 기본 - 지연 로딩 즉시 로딩 (0) | 2023.06.28 |
JPA 기본 - 프록시 객체 (0) | 2023.06.28 |