본문 바로가기
개발 관련 지식/Spring Framework Basic

Security - RememberMeAuthenticationFilter

by 권태일1147 2022. 3. 29.

RememberMeAuthenticationFilter가 사용자 요청을 받아서 그 요청을 실행하는 조건이 있다.

  1. Authentication 인증 객체가 null일 경우
    • 사용자 세션이 만료(session timeout)되거나 끊겨서(브라우저 종료) 더 이상 세션 안에서 SecurityContext를 찾지 못하고, SecurityContext가 존재하지 않기 때문에 Authentication 객체도 없는 경우
  2. 사용자가 Remember-Me 쿠키를 가지고 요청을 할 경우

 

동작 방식

  1. 사용자가 RememberMe 기능을 활성화시키고 요청을 하면 RememberMeAuthenticationFilter가 동작한다.
  2. RememberMeService 인터페이스의 구현체로 인증 처리한다.
    • TokenBasedRemeberMeServices는 메모리에 남겨놓은 토큰과 사용자가 가져온 토큰을 비교해서 인증처리(기본 14일)
    • PersistentTokenBasedRememberMeServices는 DB에 남겨놓은 토큰과 사용자가 가져온 토큰을 비교해서 인증처리(영구적인 방법)
  3. RememberMeServices가 token cookie를 추출해서 사용자가 remember-me라는 토큰이 존재하는지 확인한다.
    • 존재하지 않으면 다음 필터로 넘긴다.
  4. remember-token이 존재하면 Decode token을 통해서 token의 정상 유무를 판단.
    • 정상이 아닐경우 예외 발생
  5. 사용자 토큰과 서버에 저장된 토큰이 일치하는지 확인한다.
    • 일치하지 않을 경우 예외 발생
  6. 토큰이 일치할 경우 토큰에 포함된 유저정보를 통해서 서버의 DB에 저장된 유저정보를 조회
    • 유저정보가 존재하지 않으면 예외 발생
  7. 유저 정보 조회가 성공한다면 새로운 Authentication 인증 객체를 생성한다.
  8. Authentication 객체를 AuthenticationManager에게 전달해서 인증처리를 한다.