[Spring Security] AnonymousAuthenticationFilter

2024. 1. 4. 16:26백엔드/Spring Boot

# AnonymousAuthenticationFilter

  • 익명 사용자에 대한 인증을 처리하는 필터이다. (`익명 사용자` 란 아직 로그인하지 않은 유저, 유효한 인증토큰이 아닌 유저를 의미)
  • 익명 사용자와 인증 사용자를 구분해서 처리하기 위한 용도로 사용된다.
  • `익명 사용자`는 로그인이 가능한 경로를 통해 인증허가를 을 받게 될 경우, 일반 사용자로 등극하여, 로그인 접속 및 향후 접속유지가 가능하게된다.
  • 인증을 받지 못한 사용자는 `익명 사용자`로 분류되어 익명사용자 인증 토큰이 익명 사용자 관리 명목으로 생성되지만 로그인과 관련된 접근 권한은 받지 못하고 세션도 생성되지 않고 로그인 페이지로 리다이렉트 시킨다. 
  • 화면에서 인증 여부를 구현할 때 isAnonymous() 와 isAuthenticated() 로 구분해서 사용한다.
    로그인 : isAnonymous() , 로그아웃 : isAuthenticated()

 

# 익명 사용자 검사 시 객체 == null 로 검사하지 않는 이유 

 스프링 시큐리티에서 인증받지 않은 상태를 판별하는 기준은 user 객체의 존재 여부가 아니기 때문이다. 

user 객체 정보가가 null 이라 할지라도 Authentication 이 null 이 아니면 인증 받은 것으로 간주하기 때문이다. 

 

익명 사용자 여부를 검사하는 코드

if (SecurityContextHolder.getContext().getAuthentication() == null) {
// 익명의 사용자 처리 
}

 

 

 

 

Reference

1. 인프런 커뮤니티 게시글 

2. 인프런 '스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security' - 정수원