익명사용자 인증 처리 필터이다.
익명 사용자와 인증 사용자를 구분해서 처리하기 위한 용도로 사용한다.
화면에서 인증 여부를 구현할 때 isAnonymous() 와 isAuthenticated() 로 구분해서 사용한다.
인증 객체를 세션에 저장하지 않는다.
존재 하는 이유는?
사용자가 인증을 받게 되면 세션에 유저 객체를 저장한다. 인증을 받지 못하면 null 로 처리한다.
이 사용자가 어떤 자원에 접근하려고 하면, 이 유저인증 객체가 존재하는 지 확인한다.
익명 사용자 인증 필터에서는 인증을 못 받아도 null 로 처리하지 않고 별도의 익명 사용자 객체를 만들어 처리한다.
- 사용자가 요청을 보낸다.
- anaoymousAuthenticationFilter 가 요청을 받는다.
- 이 사용자가 인증객체를 가지고 있는 지 판단한다.
- 존재한다면 다음 필터로 이동한다.
- 존재하지 않는다면, 인증을 거치지 않은 사용자로 판단하고 인증객체를 생성하여 시큐리티 컨텍스트에 저장한다.
즉, 시큐리티가 현재 사용자가 인증을 받지 않은 사용자인지 검사할 때, 시큐리티 컨텍스트에서 null 인지 판단하는 게아니라 익명인증객체를 확인한다.