🟩/JWT

pasds-world 프로젝트 구현 방법

진뚱이용 2024. 6. 13. 00:06
  • 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 카테고리에서 확인