Remember Me 인증

Remember Me 인증

 

 

  • 흔히 우리가 보고 있는 내 계정 기억하기 기능을 말함. 
  • 세션이 만료되고 웹 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능
  •  Remember-Me 쿠키에 대한 Http 요청을 확인한 후 토큰 기반 인증을 사용해 유효성을 검사하고 토큰이 검증되면 사용자는 로그인이 된다. 
  • 사용자 라이프 사이클
    • 인증성공(Remember-Me 쿠키 설정)
    • 인증실패(쿠키가 존재하면 쿠키 무효화)
    • 로그아웃(쿠키가 존재하면 쿠키 무효화)

RememberMeAuthenticationFilter

 

 

  1. Authentication이 SecurityContext에 저장이 되어 있지 않다면 또는 Form 로그인으로 로그인시 RememberMe 체크박스에 클릭을 하여 접속하여 Client가 쿠키를 가지고 있다면 다음번 Server에 접근시 해당 Cookie를 기반으로  RememberMeAuthenticationFilter를 수행함.
  2. RemembermeService Interface 수행 (RememberMe 인증 처리를 하는 구역)
    • TokenBasedRememberMeService : 만료기간이 있는 토큰쿠키를 인증.
    • PersistanceTokenBasedRememberMeService : 만료기간이 영구적인 토큰쿠키를 인증.
  3. RemembermeService Token을 추출하고 Token이 존재하는지 확인. 
    • No : chain.dofiler 다른 filter를 수행.
  4. 존재할 경우 Decode Token을 수행(정상유무를 판단)
  5. Token이 서로 일치하는지  확인.
  6. User 계정이 존재하는지 확인.
  7. 새로운 Authentication 객체를 생성.
  8. AuthenticationManager에게 Authentication 객체를 넘겨 인증확인 하도록 함.

SecurityConfig 

 

  • .rememberMe() : 내 계정 기억 기능을 사용하겠다는 메소드
  • .rememberMeParameter("remember") : 체크박스의 name 값을 표시함.
  • .tokenValiditySeconds(3600) : 토큰 말료시간 단위는 초 단위임. 
  • .userDetailsService(userDetailsService); : Remember Me 기능을 사용할 때 사용자를 조회하는 기능을 수행. 

 

http
        .formLogin()
        .and()
        .rememberMe()
        .rememberMeParameter("remember")
        .tokenValiditySeconds(3600)
        .userDetailsService(userDetailsService);

 

'Backend > Security' 카테고리의 다른 글

동시 세션 제어  (0) 2023.01.03
AnonymousAuthenticationFilter  (0) 2023.01.03
Logout 처리 및 LogoutFilter  (0) 2023.01.03
UsernamePasswordAuthenticationFilter  (0) 2023.01.03
Boot Security  (0) 2023.01.02