SpringBoot/Security
[SpringSecurity] Anonymous AuthenticationFilter
유쾌한고등어
2023. 4. 6. 21:13
● Anonymous AuthenticationFilter 는 사용자 객체를 null로 처리하는 게 아니라 별도의 Anonymous Authentication Token의 인증객체를 만들어서 사용한다.
● 익명 사용자라고 할 지라도 마치 인증 사용자가 인증 성공 이후에 저장하는 방식과 동일하게 Security Context안에 인증객체를 저장한다.
● 익명사용자는 Authentication 이 null 이 아니고 문자열의 "anonymousUser" 이 저장되어 있는 principal 과 ROLE_ANONYMOUS 권한 정보를 가지고 있는 객체이다.
어떻게 보면 익명사용자 즉 로그인을 하지 않은 사용자는 궁극적으로 user 가 null 인 상태라 가정하고 코드를 작성하는게 당연할 수있다.하지만 스프링 시큐리티는 익명사용자가 인증을 받은 것은 아니지만 단순히 null 체크 기능을 넘어서 인증 및 인가 영역 전반에 걸쳐 특정한 목적과 사용을 위해서 고안한 설계물이며, AnonymousAuthenticationFilter 가 중심이 되어서 익명사용자용 인증객체와 권한 정보등을 생성하는 처리를 하고 있는 것이다.
@Override
protected void configure(HttpSecurity http) throws Exception {
// 세션 관리
http
.sessionManagement() // 세션 관리 기능 작동
.invalidSessionUrl("/invalid") // 세션 유효하지않을때 이동할 페이지
.maximumSessions(1) // 최대 허용 가능 세션 수 (1)
.maxSessionsPreventsLogin(true) // 동시 로그인 차단, false: 기존 세션 만료 (default)
.expiredUrl("/expired"); //세션만료시 이동할 페이지
}