본문 바로가기

spring security

기억하기 인증 필터 - RememberMeAuthenticationFilter

정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!

 

 

 

RememberMeAuthenticationFilter
  • SecurityContextHolder에 Authentication이 포함되지 않은 경우 실행되는 필터
    • 포함되어 있다면 인증된 상태이므로 인증 처리 필요가 없음
  • 세션이 만료되었거나 애플리케이션 종료로 인해 인증 상태가 소멸된 경우 → 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 자동 로그인 처리를 수행
  • 토큰을 생성하고 쿠키에 담아 보내는 역할이 아님 ! → 이건 폼인증 필터에서 RememberMeServices를 통해 처리
  • 인증 상태가 소멸된 경우 재인증 진행하여 자동로그인을 처리하는 역할

 

흐름도

 

client

↓  Get  /user

RememberMeAuthenticationFilter

Authentication != null : 인증된 Authentcation이 존재하는지

Yes

chain.doFilter

이미 인증된 상태이므로 인증 처리 없이 진행

 

No

RememberMeServices.authLogin()
- RememberMeAuthenticationToken : (UserDetails + Authorities) 
(UsernamePasswordAuthenticationToken와 유사 : 각각의 필터에서 사용하는 토큰은 각각 다름)

인증이 필요한 상태
RememberMeServices.autologin() 호출
autologin() 내부에서 유저 객체와 권한 정보 포함하는 RememberMeAuthenticationToken 생성

AuthenticationManager : RememberMeAuthenticationToken을 전달하여 token을 통해 인증 처리를 하도록 함

인증 성공 ?

Yes

RememberMeAuthenticationToken : 인증에 성공한 인증 객체

SecurityContextHolder : Authentication을 SecurityContext에 설정

SecurityContextRepository : 세션에 SecurityContext가 저장됨
- 세션에 저장되어야 자동 로그인 가능

ApplicationEventPublisher : 인증 성공 이벤트를 게시
No

RememberMeServices : RememberMeServices.loginFail 호출됨
- 인증 요청에 실패하면 보안을 위해 자동 로그인 삭제 : remember-me 쿠키를 지움 !

 

 

 

 

'spring security' 카테고리의 다른 글

로그 아웃 - logout()  (0) 2025.01.31
익명 인증 사용자 - anonymous()  (0) 2025.01.28
기억하기 인증 - rememberMe()  (0) 2025.01.28
기본 인증 필터 - BasicAuthenticationFilter  (0) 2025.01.27
기본 인증 - httpBasic()  (0) 2025.01.27