개발이군고구마

[Spring Security] 타기기에서 자동로그인 기능 풀기 본문

SERVER/Spring

[Spring Security] 타기기에서 자동로그인 기능 풀기

김구황 2024. 10. 28. 13:26
728x90

1. 개요

  • JSSESIONID가 만료되거나 쿠키가 없을지라도(세션 정보 없음) 어플리케이션이 사용자를 기억하는 기능
  • Rememberme 토큰 쿠키를 이용함
  • Remember-me 설정
<remeber-me
	service-ref=“rememberMeService”
	key=“..key”
	authentication-success-handler-ref=“security…successhandler”
/>


<beans:bean id=“rememberMeService” class=“….GenereousPersistentTokenBasedRememberMeServices”>
	<beans:contructor-arg index=“0” value=“…key”/>
	…..
	<beans:property name=“cookieName” value=“mb-remember-me”/>
</beans:bean>


2. 문제상황

여러 개의 기기를 사용해서 서비스를 이용하고 있는 사용자의 경우
중요 개인 정보가 변경된 경우 자동로그인 기능으로 인해 다른 기기의 사용자가 계속해서 로그인을 하여 서비스 사용할 수 있는 이슈 발생


3. 해결 방향

현재 remember-me의 쿠키값을 기준으로 사용자를 확인하는 방법을 분석함

  • 1) 우선 redis에서 1차적으로 utid를 기준 쿠키값을 저장 후 조회하고 있음
  • 2) redis에서 값이 없을 때 쿠키값을 저장하고 있는 테이블에서 일치하는 쿠키값을 찾음

=> 이 결과에 따라 success/fail 로직

그렇다면 회원정보의 변경이 생길 경우
redis/db 두 곳에서 쿠키값에 해당하는 데이터 정보를 삭제하여, remember-me 쿠키값을 찾지 못하도록 함

 

4. 최종적으로 정리한 remember-me 작동 원리와 일감 해결 방법