🟩/JWT

화이트 리스트, 블랙 리스트

진뚱이용 2024. 6. 12. 18:45

화이트 리스트 방식

  • 유효한 JWT 토큰을 서버에 저장하고 관리
  • 사용자가 로그아웃하거나 토큰이 만료되면 화이트리스트에서 해당 토큰을 제거

장점

  • 토큰의 유효성을 확실하게 보장한다.
  • 토큰을 쉽게 무효화할 수 있다.
  • 특정 사용자의 세션을 쉽게 추적하고 제어할 수 있다.

단점

  • 모든 유효한 토큰을 서버에 저장하고 관리해야 하기 때문에, 서버의 부하가 증가할 수 있다.

블랙 리스트 방식

  • 무효화된 JWT 토큰을 서버에 저장하고 관리
  • 토큰이 만료되거나 사용자가 로그아웃할 때 해당 토큰을 블랙리스트에 추가

장점

  • 화이트리스트에 비해 리소스를 적게 사용한다. 

단점

  • 모든 토큰이 유효하다고 간주되므로, 새로운 공격 방식이 발견되면 대응이 늦어질 수 있다. 

❓ 세션 인증 방식과 차이점이 뭘까?

💡 

  • 서버 메모리
    • 둘 다 Redis를 이용한다고 생각하면 같다고 볼 수 있다.
  • 네트워크 트래픽
    • JWT는 상당히 크기 때문에 HTTP 요청의 오버헤드가 커질 수 있다.
  • 보안 (복잡성 비교)
    • JWT: 약 43자리의 Base64 인코딩 문자열은 (64^43)의 경우의 수를 가진다.
    • 세션 ID: 32자리의 16진수 문자열은 (16^32)의 경우의 수를 가진다.
    • JWT가 더욱 복잡한 것을 확인할 수 있다.