화이트 리스트 방식
- 유효한 JWT 토큰을 서버에 저장하고 관리
- 사용자가 로그아웃하거나 토큰이 만료되면 화이트리스트에서 해당 토큰을 제거
장점
- 토큰의 유효성을 확실하게 보장한다.
- 토큰을 쉽게 무효화할 수 있다.
- 특정 사용자의 세션을 쉽게 추적하고 제어할 수 있다.
단점
- 모든 유효한 토큰을 서버에 저장하고 관리해야 하기 때문에, 서버의 부하가 증가할 수 있다.
블랙 리스트 방식
- 무효화된 JWT 토큰을 서버에 저장하고 관리
- 토큰이 만료되거나 사용자가 로그아웃할 때 해당 토큰을 블랙리스트에 추가
장점
- 화이트리스트에 비해 리소스를 적게 사용한다.
단점
- 모든 토큰이 유효하다고 간주되므로, 새로운 공격 방식이 발견되면 대응이 늦어질 수 있다.
❓ 세션 인증 방식과 차이점이 뭘까?
💡
- 서버 메모리
- 둘 다 Redis를 이용한다고 생각하면 같다고 볼 수 있다.
- 네트워크 트래픽
- JWT는 상당히 크기 때문에 HTTP 요청의 오버헤드가 커질 수 있다.
- 보안 (복잡성 비교)
- JWT: 약 43자리의 Base64 인코딩 문자열은 (64^43)의 경우의 수를 가진다.
- 세션 ID: 32자리의 16진수 문자열은 (16^32)의 경우의 수를 가진다.
- JWT가 더욱 복잡한 것을 확인할 수 있다.