JWT 란

jaehan·2022년 8월 2일
0

개발지식

목록 보기
4/7
post-thumbnail

이번 프로젝트에서 인증로직에 JWT를 사용하기 때문에 JWT에 대해 공부해 보았다

JWT

JWT 란?

JWT(Json Web Token) 란 Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다.

JWT의 구조

  • Header, Payload, Signature의 3부분으로 이루어 진다.
  • 각 부분은 Base64Url로 인코딩 되어 표현된다.

토큰의 헤더는 typalg 두 가지 정보로 구성된다. algSignature를 해싱하기 위한 알고리즘을 지정하는 것이다.

  • typ: 토큰의 타입을 지정
  • alg: 알고리즘 방식을 지정하며, 서명(Signature) 및 토큰 검증에 사용 ex) HS256(SHA256) 또는 RSA

Payload

토큰의 페이로드에는 토큰에서 사용할 정보의 조각들인 클레임이 담겨있다.

📌 등록된 클레임
iss: 토큰 발급자(issuer)
sub: 토큰 제목(subject)
aud: 토큰 대상자(audience)
exp: 토큰 만료 시간(expiration), NumericDate 형식으로 되어 있어야 함 ex) 1480849147370
nbf: 토큰 활성 날짜(not before), 이 날이 지나기 전의 토큰은 활성화되지 않음
iat: 토큰 발급 시간(issued at), 토큰 발급 이후의 경과 시간을 알 수 있음
jti: JWT 토큰 식별자(JWT ID), 중복 방지를 위해 사용하며, 일회용 토큰(Access Token) 등에 사용

Signature

서명은 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드이다. 서명은 위에서 만든 헤더와 페이로드의 값을 각각 BASE64Url로 인코딩하고, 인코딩한 값을 비밀 키를 이용해 헤더에서 정의한 알고리즘으로 해싱하고, 이 값을 다시 인코딩 하여 생성한다.

👇 이게 우리 프로젝트에서 생성한 시그니처 이다.

이 시그니처를 jwt 홈페이지에서 디코딩하면 헤더, 페이로드등의 정보들을 볼수 있다.

0개의 댓글