Spring Security + Redis를 활용한 로그인/로그아웃 토큰 관리

Dev.Dana·2025년 3월 6일

Zipitda

목록 보기
1/3
post-thumbnail

JWT 토큰을 Redis에 저장하는 이유

JWT의 특징은 서버에서 상태를 저장하지 않아도 인증이 가능한 것.
하지만 로그아웃 시 “토큰을 바로 만료시킬 방법이 없다”는 게 문제다.
서버(redis)에서 토큰을 관리한다면 다음과 같은 장점이 있다.

  • 로그인 시 Access Token & Refresh Token을 Redis에 저장
  • 로그아웃하면 Redis에서 토큰을 즉시 삭제
  • 만료된 토큰을 서버에서 체크 가능

JWT(JSON Web Token) 기반 인증을 사용할 때 Access Token과 Refresh Token을 Redis에 저장하면 세션 관리 및 토큰 무효화를 쉽게 할 수 있다.
집잇다 프로젝트를 진행하며 Redis를 이용해 로그인/로그아웃 후 토큰이 어떻게 저장 및 삭제되는지 직접 확인해보았다.

1. Redis를 활용한 토큰 저장 및 관리 구조

토큰 저장 방식

  • 사용자가 로그인하면 Access Token & Refresh Token을 생성하고 Redis에 저장
  • TOKEN:{email} 형태의 키를 사용하여 유저별로 토큰을 관리
  • 사용자가 로그아웃하면 해당 키를 삭제하여 즉시 무효화

Redis에 저장되는 토큰 형태

TOKEN:user@example.com -> eyJhbGciOiJIUzI1...

2. Redis에서 로그인 후 토큰 확인하기

로그인 후 Redis에 저장된 토큰 조회

먼저 사용자가 로그인하면 Redis에 토큰이 저장된다.
Redis CLI를 실행하고 저장된 토큰을 확인할 수 있었다.

Redis CLI 실행

redis-cli

저장된 토큰 키 확인

keys TOKEN:*

포스트맨으로 로그인 API를 날린 후에 명령어로 redis에 토큰이 저장되어 있는지 확인해보았다.


이처럼 로그인한 사용자의 토큰이 저장된 것을 확인할 수 있다.

3. 로그아웃 후 Redis에서 토큰 삭제 확인

로그아웃 실행 후 토큰 확인

로그아웃 API를 호출하면, Redis에서 해당 토큰이 삭제된다.

토큰이 삭제된 것을 확인할 수 있습니다.
즉, 로그아웃을 하면 토큰이 무효화되고, 이후 해당 토큰으로 요청을 보내면 인증이 거부되는 것을 알 수 있다.

4. Redis 실시간 모니터링

로그인, 로그아웃 시 Redis의 변화를 실시간으로 관찰하려면 MONITOR 명령어를 사용하면 된다.

redis-cli monitor

이 명령어를 실행한 상태에서 로그인을 하면 아래와 같은 로그를 확인할 수 있다.

이렇게 실시간으로 Redis에서 토큰이 저장되고 삭제되는 과정을 추적할 수 있다.

5. 정리

✔ 로그인 : Access Token & Refresh Token을 Redis에 저장
✔ 로그아웃 : Redis에서 해당 토큰 삭제(무효화)

이렇게 하면 JWT 기반 로그인/로그아웃을 더 안전하게 관리할 수 있다.
특히 토큰 강제 만료 기능을 구현할 수 있어 보안성이 훨씬 올라간다. 추후 Refresh Token을 활용한 자동 로그인 기능까지 추가해서 완벽한(?) 또는 사용자에게 편리한 인증 시스템을 구축할 수 있을 것이다.

profile
어제의 나보단 나은 오늘의 내가 되기를

0개의 댓글