springframework/시작하자SpringSecurity

8.AnonymousAuthenticationFilter

Jungsoomin :) 2020. 9. 21. 00:33

AnonymousAuthenticationFilter..?

익명사용자와 인증사용자와의 구분을 위해 만들어진 필터이다.

  1. Authentication 객체를 Session에 저장하지 않는다.

  2. 화면에 메뉴여부를 판단할때 isAnonymous() , isAuthenticated() 등으로 줄 수 있다.


처리 과정.

  1. 자원 접근에 대한 Request 

  2. AnonymousAuthticationFilter 에서 SessionSecurityContextHolder SecurityContextAuthentication 객체가 있는지 확인

  3. 있다면 chain.doFilter() 

  4. 없다면 AnonymousAuthenticationToken 객체를 만들어서 AnonymousUser 객체, ROLE_ANONYMOUS 권한을 저장

  5. AnonymousAuthenticatonTokenSecurityContextHolder SecurityContext에 저장.


사용 이유는 .

AbstactSecurityIntercepter 마지막에 위치한 필터로, 현재 사용자가 접근하려는 자원에 최종적으로 접근가능한지의 인가처리 여부를 정하는 필터이다.

이과정에서 Authenticationnull이라면 AuthenticationcredentialsNotFoundException을 발생한다.

 

이 예외를 피하고, 익명사용자와 인증 사용자를 구분하게 하기위해 존재하는 것이다.

 

즉, AbstactSecurityIntercepter 처리 과정에서 AnonymousAuthenticationToken 이 존재한다면, AuthenticationcredentialNotFoundException발생하지 않는다.