MakerHyeon

[SpringSecurity] 인증 API - Remember Me 인증 본문

SpringBoot/Security

[SpringSecurity] 인증 API - Remember Me 인증

유쾌한고등어 2023. 4. 4. 13:54

Remember Me 인증

 

1. 세션이 만료되고 웹 브라우저가 종료된 후에도 어플리케이션이 사용자를 기억하는 기능

 

2. Remember-Me 쿠키에 대한 토큰 기반 인증 후 검증되면, 사용자는 로그인 된다

 

3. 사용자 라이프 사이클

- 인증 성공 -> Remember-Me 쿠키 설정

- 인증 실패 -> 쿠키 존재시 쿠키 무효화

- 로그아웃 -> 쿠키 존재시 쿠키 무효화

 

인증되었다는 것은 spring security에서 사용자 세션, 그리고 성공한 인증 객체를 담고있는 상태이다.

사용자가 rememberme check시, Remember-Me 쿠키를 발급해주는데, 이때 쿠키는 세션을 삭제해도 남아있다.

즉, Remember Me 인증이란 세션이 만료되었더라도 인증을 유지해주는 필터이다.

 

    @Override
    protected void configure(HttpSecurity http) throws Exception {

http
                .rememberMe()
                .rememberMeParameter("remember") // 기본 파라미터명은 remember-me
                .tokenValiditySeconds(3600) // Default는 14일
                .alwaysRemember(true) // 리멤버 미 기능이 활성화되지 않아도 항상 실행
                // 사용자 정보조회 class.반드시설정해주어야함
                .userDetailsService(userDetailsService())                
                ;                
}

 

● RememberMeAuthenticationFilter는 다음 케이스에 동작

  • 세션만료 / 인증객체 없는경우
  • 사용자가 쿠키를 가져온경우

● RememberMeServices

  • Token Cookie를 추출
  • remember Token이 존재하는지 확인
  • 토큰 정상 유무 확인
    • Token이 서로 일치하는가?
    • User 계정이 존재하는가?
  • 새로운 Authentication 생성
Comments