JWT(Json Web Token)

이주형·2022년 11월 30일

backend

목록 보기
26/53

JWT (JSON WEB TOKEN) 이란?

JWT 는 JSON Web Token의 약자로 유저를 인증하고 식별하기 위한 토큰 기반 인증이다. JWT토큰은 세션과는 달리 서버가 아닌 클라이언트에 저장되기 떄문에 메모리나 스토리지 등을 통해 세션을 관리했던 서버의 부담을 덜어 줄 수 있다.

JWT 의 특징?

토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함 되며 데이터가 많아지면 토큰이 커질 수 있으며 토큰이 한번 발급된 이후 사용자의 정보를 바꾸더라도 토큰을 재발급하지 않는 이상 반영되지 않는다.

JWT는 .으로 구분되며 Header, Payload, Signature의 3가지 문자열로 되어있다.

  • Header

Header는 토큰의 타입과 해싱 알고리즘이라는 두가지 정보를 담고 있다.

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

보통 해싱 알고리즘은 HS256을 사용하지만 HS512을 이용해 토큰을 더 길게 만들수 있다.

  • Payload

Payload에는 토큰에 담을 정보가 들어가며, 담는 정보의 한 조각은 name/value의 한 쌍으로 이루어진 Claim이라고 부릅니다. Claim은 Registered, Public, Private의 세 분류로 나뉘어져 있으며 Registered Claim은 토큰 발급자, 토큰 제목, 토큰 만료시간, 토큰 발급시간 등 토큰에 대한 정보를 담기 위해 이미 이름이 정해진 Claim 입니다.

  • Signature

JWT의 마지막 부분은 서명으로, Header의 인코딩값과 Payload의 인코딩값을 합친 후 주어진 비밀키로 해싱하여 생성합니다

0개의 댓글