본문 바로가기

Spring security

스프링 시큐리티 기본 API 및 Filter 이해 - Remember Me 인증

인프런 정수원님의 “스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security"를 보고 작성한 글입니다.

 

세션과 리멤버미 토큰은 모두 HTTP 쿠키를 이용하여 사용자 로그인 정보를 유지하지만, 그 사용 목적과 지속 기간에 차이가 있다.

  1. 세션: 세션은 사용자가 로그인하면 일정 시간 동안 로그인 정보를 유지하기 위한 목적으로 사용됩니다. 특정 기간 동안 사용자가 애플리케이션을 이용하는 동안 지속되는데, 세션 만료 시 사용자는 다시 로그인해야 합니다. 또한, 브라우저를 닫으면 세션은 일반적으로 종료되며 로그아웃 처리됩니다.
  2. 리멤버미 토큰: 리멤버미 토큰의 목적은 사용자가 몇 일 동안 애플리케이션에 접속하더라도 로그인이 유지되도록 만드는 것입니다. 세션과 달리 리멤버미 토큰은 긴 유효 기간을 가지며, 사용자가 브라우저를 닫아도 그 기능이 계속 유지됩니다.

할 말은 세션은 일시적인 로그인 상태를 유지하는데 초점을 두고 있으며, 리멤버미 토큰은 꽤 오랜 기간 동안 로그인 상태를 유지하도록 하며, 사용자에게 더 편리한 서비스 경험을 제공하는 것이 목적이다.

코드

http
                // 리멤버미 기능을 설정합니다.
                .rememberMe(rememberMe -> rememberMe
                        // 리멤버미 옵션을 체크할 때 사용되는 요청 파라미터의 이름을 설정합니다.
                        // 예: 로그인 폼에서 <input type="checkbox" name="remember"> 와 같이 사용됩니다.
                        .rememberMeParameter("remember")
                        // 리멤버미 토큰의 유효 시간(초 단위)을 설정합니다.
                        // 여기서는 3600초(1시간) 동안 유효한 토큰을 생성하도록 설정하였습니다.
                        .tokenValiditySeconds(3600));

스프링 시큐리티 5.4이후로 WebSecurityconfigureAdaptor를 더 이상 사용하지 않고 SecurityFilterChain를 사용하므로 userDetailService를 설정하지 않아도 된다.

userDetailService는 인증된 사용자의 정보를 가져오는 역할을 한다.