AnonymousAuthenticationFilter..?
익명사용자와 인증사용자와의 구분을 위해 만들어진 필터이다.
-
Authentication 객체를 Session에 저장하지 않는다.
-
화면에 메뉴여부를 판단할때 isAnonymous() , isAuthenticated() 등으로 줄 수 있다.
처리 과정.
-
자원 접근에 대한 Request
-
AnonymousAuthticationFilter 에서 Session의 SecurityContextHolder 의 SecurityContext에 Authentication 객체가 있는지 확인
-
있다면 chain.doFilter()
-
없다면 AnonymousAuthenticationToken 객체를 만들어서 AnonymousUser 객체, ROLE_ANONYMOUS 권한을 저장
-
AnonymousAuthenticatonToken을 SecurityContextHolder 의 SecurityContext에 저장.
사용 이유는 .
AbstactSecurityIntercepter 는 마지막에 위치한 필터로, 현재 사용자가 접근하려는 자원에 최종적으로 접근가능한지의 인가처리 여부를 정하는 필터이다.
이과정에서 Authentication이 null이라면 AuthenticationcredentialsNotFoundException을 발생한다.
이 예외를 피하고, 익명사용자와 인증 사용자를 구분하게 하기위해 존재하는 것이다.
즉, AbstactSecurityIntercepter 처리 과정에서 AnonymousAuthenticationToken 이 존재한다면, AuthenticationcredentialNotFoundException은 발생하지 않는다.
'springframework > 시작하자SpringSecurity' 카테고리의 다른 글
10.SessionManagementFilter, ConcurrentSessionFilter (0) | 2020.09.21 |
---|---|
9.세션 동시 제어 / 세션 고정 보호 / 세션 정책 (0) | 2020.09.21 |
7.RememberMeAuthenticationFilter (0) | 2020.09.19 |
6.Remember Me 인증 (0) | 2020.09.19 |
5.LogoutFilter (0) | 2020.09.19 |