- Redis를 활용한 JWT 화이트 리스트 방식
- 쿠키에 담아서 클라이언트로 전송
- 쿠키 설정 SameSite: Strict, HttpOnly: true, Secure: true
- 단일 기기 로그인 구현
{
"sub": "3" or "wlsdyd4@naver.com", // memberId or email
"jti": "4ee1b3d8-53bc-49ac-9667-e8d9f844f23b", // UUID
"tokenType": "TEMPORARY", // EMAIL or TEMPORARY or ACCESS or REFRESH
"exp": 1715610530 // tokenType.expiredTime
}
- redisKey: sub_tokenType
- redisValue: jti
- TTL: tokenType.expiredTime
1. JWT 서명 검사
2. JWT exp 검사
3. redisKey 존재 여부 검사 -> 해당 유저가 로그인 중인지
4. redisValue 일치 여부 검사 -> 로그인 중인 해당 유저의 사용 중인 토큰이 맞는지
궁금증
❓ redis에 expire이 있는데 jwt에 exp를 담는 이유는?
💡 redis의 부하를 줄이기 위해 redis를 확인하기 전에 exp로 한번 검증 가능하게 한다.
❓ redis가 작동을 안 하게 된다면?
💡 Redis 카테고리에서 확인