Spring Security - UserDetailsService with Remember-me feature (TokenBasedRememberMeServices)

여러가지 서비스를 이용하다보면, 자동 로그인하기라는 체크 박스를 기본적으로 확인할 수 있다. 스프링 시큐리티에서 지원하는 Remember-me 라는 기능이 바로 그 기능이다. 웹사이트를 자주 방문하는 사용자에게 편리한 기능이다. 사용자가 웹 브라우저를 종료한 후에도 사용자의 웹 브라우저에 Remember-Me 쿠키를 저장함으로써 재방문 시 사용자를 기억하는 기능이다. 이는 사용자가 사용자명이나 패스워드를 다시 입력할 필요가 없다. 스프링 시큐리티 Remember-Me 기능에는 두 가지가 있다. 토큰 기반의 Remember-Me 기능으로, 암호화 시그니처 에 의존한다. (TokenBasedRememberMeServices) 영구 토큰 (Persistent Token) 기반 Remember-Me 기능이며, 데이터베이스 (datastore) 가 필요하다. (PersistentTokenBasedRememberMeServices) 먼저, 토큰 기반 Remember-Me 기능을 살펴보자. 아래의 로그인 화면과 같이, login.html 에서 Remember me 체크 박스를 만들어준다. 그리고 name attribute 설정을 해준다. spring security remember-me 기능의 default parameter 는 "remember-me" 이다. 물론 다르게 설정이 가능하다. 아래는 시큐리티 설정이다. HttpSecurity 에 rememberMe() 와 key() tokenValiditySeconds() 메서드를 통해 설정한다. key() -> Remember-Me 쿠키의 시그니처 생성 시 사용되는 고유한 키를 정의한다. 애플리케이션의 고유 이름을 포함한 최소 36자 길이의 문자열을 사용할 것을 추천한다. tokenValiditySeconds -> Remember-Me 쿠키의 만료 시간을 설정한다. -1 로 설정한다면, 2주를 의미한다....