JWT(Json Web Token)

이예음·2022년 10월 21일
0
post-thumbnail

JWT란?

: 인증에 필요한 정보들을 암호화시킨 JSON 토큰
그리고 JWT 기반 인증은 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다.

JWT 구성

JWT는 .을 기준으로 세 파트로 나뉜다.

JWT를 어떻게 검증하는지에 대한 내용이 들어가 있다.
토큰의 타입, 암호화 알고리즘이 어떤 알고리즘인지에 대한 정보가 들어있다.
해시 알고리즘의 이름을 적어줄 수 있다.

payload

토큰에 담아서 우리가 보내고자 하는 데이터가 이곳에 담겨져 있다.
이 정보의 조각은 클레임(claim) 이라고 하고, key - value의 한 쌍으로 이루어져 있다.
그리고 payload에는 여러 개의 클레임을 담을 수 있고, 클레임을 공개(public) 혹은 비공개(private) 할 것인지 등록(registered)할 것인지 결정할 수 있다.

signature

시그니처(signature)에는 위의 헤더(header)와 페이로드(Paylaod)를 합친 문자열을 서명한 값이다. 서명은 헤더의 alg에 정의된 알고리즘과 secret key를 이용해 생성하고 Base64 URL-Safe로 인코딩한다.
secret key를 포함해서 암호화가 되어있다.

JWT 장점

  1. 세션 방식과 다르게 별도의 인증 저장소가 필요 없어서 서버와의 커뮤니케이션을 최소한으로 할 수 있다.
  2. 트래픽에 대한 부담이 적다.
  3. 세션과 다르게 독립적인 느낌의 JWT를 활용한다는 것.

JWT 단점

  1. JWT의 크기가 커질수록 거의 모든 요청에 대해 전송되므로 데이터 트래픽 크기에 영향을 미칠 수 있다.
  2. 토큰은 클라이언트에 저장되기 때문에 DB에서 사용자 정보를 수정하더라도 토큰에 직접 적용할 수 없다.
profile
응애

0개의 댓글