이 포스트는 정수원님의 스프링 시큐리티 강의 수강 후 정리한 글입니다.
AnonymousAuthenticationFilter

- 익명사용자 인증 처리 필터로 익명사용자와 인증 사용자를 구분해서 처리하기 위해 사용한다.
- 인증 받지 않는 사용자가 있을 때 인증 여부를 파악하게 되면 Null를 return하는데 이는 NullPointerExcepion을 발생시키기 때문에 익명 인증객체를 만들어 사용한다.
- 인증 객체를 Session에 저장하지 않는다.
- AnonymousAuthenticationFilter에 요청이 들어오면 SecruityContext에 담겨 있는 Authentication(인증 객체)을 확인한다.
- Authentication이 있다면 인증받은 사용자이기 때문에 Chain.doFilter로 넘어가고, Authentication이 없다면 인증받지 않은 사용자이기 때문에 익명 인증객체(AnonymousAuthentication)을 생성하고 이를 SecurtiyContextHolder-SecurityContext에 저장한다.
- 익명 인증객체(AnonymousAuthentication)은 null이 아닌 anonymousUser, ROEL_ANONYMOUS로 구성되어 있다.
- 그래서 인증 여부를 판단할 때 '==null'로 판단하는 것이 아니라, isAnonymoust()와 isAuthenticated()로 구분해 사용한다.