본문 바로가기
IT/Knowledge

JWT ?

by 성준하이 2023. 3. 24.
반응형
JWT란?

JWT는 JSON Web Token의 약자로 선택적 서명 및 암호화를 사용하여 JSON 데이터를 보관하고 있는 인터넷 표준 웹 토큰이며

JWT를 사용하는 이유는 주로 사용자 인증처리를 위해 사용한다.

기존에 사용되던 세션 처리와 달리 서버에 정보를 저장하지 않아 Stateless한 상태의 서버를 만들어주는 특징이 있다.

 

 

JWT 구조는 Header(헤더), Payload(내용), Signature(서명)의 3가지로 구분되며 다음과 같이 토큰이 만들어진다.

  • JWT 토큰: [Base64(Header)].[Base64(Payload)].[Base64(Signature)]

 

 

  • Header(헤더)

헤더에는 토큰의 타입과 해시 암호화 알고리즘으로 구성되어 있다.

 

{
    "typ": "JWT",
    "alg": "HS256"
}

 

 

  • Payload(내용)

내용에는 key-value의 형태로 되어있으며 토큰에 담고싶은 데이터, 제목, 유효시간 등으로 구성되어 있다.

 

{
    "sub": "subject of contents",
    "exp": Date
    "userInfo": userObject,
    "price": 1234
}

 

 

  • Signature(서명)

서명에는 base64로 인코딩 된 헤더, 내용을 비밀키를 이용하여 해싱 암호화 알고리즘 처리가 이루어진 값으로 구성되어 있다.

 

HS256([Base64(Header)].[Base64(Payload)], secretKey)

 

 

 

 

 

JWT 인증 과정

 

JWT authorization process

 

 

장점

 

  • 토큰 자체에 인증정보가 포함되어 있어 별도 인증 저장소(DB, 서버 등)가 필요하지 않음
  • 분산된 서비스 환경에 대응하기 용이
  • 세션 처리와 달리 서버 부하를 낮춤 (인증 저장소가 필요없기 때문)

 

 

단점

 

  • 토큰의 만료시간이 지날때 까지 토큰과 관련된 정보를 제어할 수 없음
  • 토큰에 담기는 데이터 양이 많아질수록 토큰이 점점 커짐
  • 대부분의 요청에 토큰이 함께 전송되어 트래픽 크기에 영향을 미칠 수 있음

 

반응형

'IT > Knowledge' 카테고리의 다른 글

트레이드오프 (trade-off)  (29) 2023.03.29
Y2K(23.03.26)  (6) 2023.03.25
message Queue (MQ) 란?  (37) 2023.03.23
[NATS] NATS 개념 정리  (22) 2023.03.22
배치와 데몬의 차이  (36) 2023.03.08

댓글