목록으로
Network

JWT - 토큰처리 방법

Dev Park
7/15/2023
170 views

서론

JWT에서 토큰을 처리하는 방법에 있어서 총 두가지 방법이 있다.
하나는 토큰을 따로 저장하지 않고 처리하는 상태 비저장 방식, 또 다른 하나는 서버에 토큰을 데이터베이스에 저장해 처리하는 상태 저장 방식이 있다.
오늘은 이 두가지 방식에 대해서 알아보고 각 장단점을 알아보자.

상태 비저장

상태 비저장 방식은 서버 측에 토큰을 따로 저장하지않고 키를 이용해 복호화하여 해당 토큰이 정상적인지를 체크하고, 토큰 내부의 정보를 이용해 해당 토큰이 유효한지를 알아내는 방법이다.
토큰 내부의 정보로 토큰의 유효성을 체크해야하기때문에 토큰 내부에 많은 정보가 담긴다.
그렇기에 해당 토큰 내부에는 민감한 개인정보는 넣지 않아야하며 사용자를 구분할 정도의 데이터만 담아야한다.

상태 비저장 방식의 장점

  1. 확장성
  • 서버가 발행된 토큰을 추적할 필요가 없기때문에 여러 서버에서 서비스를 지원하도록 쉽게 확장할 수 있다.
  1. 성능
  • 토큰의 유효성을 검사하기 위해 데이터베이스에 조회할 필요가 없기때문에 성능적으로 유리하다.

상태 비저장 방식의 단점

  1. 토큰 관리의 어려움
  • 토큰이 만료되기전에 토큰을 무효화하는 것이 불가능하고, 비정상적인 접근이나 토큰을 도난 당했을때 보안상 위험하다.
  1. 토큰 크기 증가
  • 토큰을 검증하기위해 많은 데이터를 토큰 내부에 담아야하기때문에, 성능에 안좋은 영향을 미칠 수 있다.

상태 저장

상태 저장 방식이란 데이터베이스에 토큰을 저장해 서비스를 사용할 때마다 데이터베이스 내부에 저장된 토큰을 체크하여 처리하는 방식이다.
사용자가 로그아웃하면 토큰의 재사용 방지를 위해 데이터베이스에서 제거하여 토큰을 관리할 수 있다.

상태 저장 방식의 장점

  1. 토큰 관리 용이
  • 토큰을 서버의 데이터베이스에서 관리하기때문에 해당 토큰이 도난당하거나 비정상적인 접근을 할 때, 또는 사용자가 로그아웃을 했을 때 해당 토큰이 만료되기전에 제거할 수 있다.
  1. 토큰 크기 감소
  • 토큰을 검증하기위해 토큰 내부의 정보를 체크할 필요가 없으니 토큰의 크기가 최소화 된다.
    이는 성능적으로 유리할 수도 있다.

상태 저장 방식의 단점

  1. 성능 감소
  • 토큰의 유효성을 체크하기 위해 데이터베이스에 계속해서 조회를 해야하기때문에 상태 비저장 방식에 비해 불리하다.
  1. 확장성
  • 모든 서버가 토큰이 저장된 데이터베이스에 접근할 수 있도록 해야하기 때문에 서비스를 확장할 때 복잡하다.

마치며

두 가지 방식 모두 각각 장단점이 있는 방식이다.
자신의 서비스에 맞춰서 선택하는 것이 중요하다.
또한 제일 중요한 것은 클라이언트측에서 JWT를 확실하게 관리하는 것이다.
그리고 서버에서는 토큰이 도난 되었을 때를 대비해 토큰의 만료기간을 설정하고 관리하는 것이 중요하다.