2022-02-23-TIL

Today I Learned

JWT

JSON 객체를 사용해서 토큰 자체를 저장하는 웹 토큰의 일종. 아주 간편하고 쉽게 적용할 수 있어서 몇 가지 고려사항만 잘 적용하면 작은 프로젝트에서 부터 대규모 프로젝트까지 잘 적용할 수 있다.

Header, Payload, Signature 세 개의 부분으로 구성되어있다. Header는 Signature를 해싱하기 위한 알고리즘 정보를 담고있다. Payload는 서버와 클라이언트가 주고받는 시스템에서 실제로 사용될 정보에 대한 내요을 담고있다. Signature 는 토큰의 유효성 검증을 위한 문자열이다. 이 문자열을 통해 서버에서 이 토큰이 유효한지 검사할 수 있다.

JWT 장점

  • 중앙의 인증서버, 데이터 스토어에 대한 의존성이 없다. 시스템 수평 확장에 유리하다.
  • Base64 URL Safe Encoding > URL, Cookie, Header 모두 사용 가능하다.

JWT 단점

  • Payload의 정보가 많아지면 네트워크 사용량 증가, 데이터 설계 고려가 필요하다.
  • 토큰이 클라이언트에 저장되므로 서버에서 클라이언트의 토큰을 조작할 수 없다.