Spring Security를 개발하기위해 해당 관련 정보들을 학습하는도중
일반적으로 사용되는 filer의 두가지에 대해 정리하려고 한다.
- AbstractAurhenticationProcessingFilter
- OncePerRequestFilter
포스트의 내용의 흐음은 아래와 같다.
- 두가지 필터의 간단한 내용 요약
- 차이점
- 결론
AbstractAurhenticationProcessingFilter
AbstractAurhenticationProcessingFilter를 매번 이름을 쓰기에는 너무 길기 때문에 AAPF로 명명하겠다
AAPF는 Spring Security에서 제공하는 기본 인증처리 필터이다
AAPF의 처리방식간단하게 정리하면 아래순서와 같다
- 사용자의 인증을 처리
- 인증의 처리가 성공된 경우 → Authentication 객체를 생성
- SecurityContextHolder에 생성된 Authentication의 정보를 저장한다
처리하는 로직? 상황? 을 통해 사용할 수 있는 방식도 정리해둔다!
- 인증처리 → Authentication 객체 생성
- 인증처리 실패 → AuthenticationFailureHandler를 이용해 실패처리를 수행할 수 있다.
- 인증처리 성공 → AuthenticationSuccessHandler를 이용해 성공처리를 수행할 수 있다
OncePerRequestFilter
OncePerRequestFilter의 경우 OPRF로 명명하겠다.
OPRF의 경우 모든 요청에 대해 한번만 실행하도록 보장된 필터이다.
→ 필터체인에서 딱한번만 실행되도록 보장된 필터라는 뜻
OPRF는 모든 요청에 공통적인 로직을 처리할 때에 유용하다고 한다.
ex) Spring Security와 JWT를 이용해 로그인을 구현 했다는 가정일 경우
모든 요청에서 JWT토큰을 검사해 유효성을 체크할 수 있음
차이점
AAPF와 OPRF는 용도가 다른 filter이기 때문에 차이점이라고 하기엔 모호하지만
나는 이해하기 쉽게 차이점이라고 정리한다.
- AAPF → 인증을 처리하는데 사용하는 필터이고
- OPRF → 모든요청에 사용되는 필터이다
용도와 시점에 대해 정리해보면 각각의 어떤 용도로 사용되는 필터인지 좀 더 명확하게 이해할 수있다.
- 용도
AAPF → 사용자의 인증처리하는데에 사용하며, 주로 로그인과 관련된 작업에 적합하다
OPRF → 모든요청에 대해 공통적으로 수행되어야하는 작업에 적합
- 시점
AAPF → 인증과정에서 특정한 시점에서 동작
OPRF → 모든요청에서 수행되며 특정시점에 대한 제한은 없다.
결론
AAPF → 로그인을 위한 로직에 관련된 기능을 수행하는 필터이고
OPRF → 모든 요청에 대해 한번만 수행되는 필터이다
예시를 들면
AAPF → 로그인을 수행할때 사용되는 필터
OPRF → 모든요청에서 토큰의 유효성을 체크하고 토큰의 유효성을 검사해 갱신하는 방식에 사용하는 필터
Spring Security의 경우 위의 AAPF와 OPRF의 필터를 기본적으로 사용한다고 하니 특별한 경우가 아닌 경우 두가지의 필터를 사용하면 될것같다.
특별한 경우는 나중에 찾아서 정리하는걸로....
나중에 Spring Security와 JWT를 이용한 코드를 작성하면서 해당 내용에 관련된 포스트를 올릴때
해당 포스틑 언급하면서 나중에 봐도 알기 쉽게 사용할 수 있도록 정리하겠다.
'Spring_Securtiy > 동작 관련 정리 및 구현' 카테고리의 다른 글
spring security 설정 시 설정값의 내용 참고블로그 (0) | 2024.01.14 |
---|---|
Spring Security_1 기본개념 및 동작원리 (0) | 2024.01.06 |