본문 바로가기

Web

JwtToken의 종류(header,payload,signature)

개발자가 원하는 정보를 JwtToken에 담는다?에 대해서 잘 와닿지 않았다. 

팀원들이 jwt token에 role을 넣는다니, 속성 정보 detail을 넣는다니.. 무슨 말인지 이해가 잘 되지 않아 찾아보고 정리한다. 

 

Jwt Token의 구조 

'payload'라고 불리는 claims를 포함하는 토큰 형식의 데이터 구조 

출처 : LG CNS

 

* JwtGuard 어노테이션이 붙은 API에 대해서는 postman에서 bearer token을 발급받아 넣어줬는데, 같은 개념이었구나. 

 

출처 : LG CNS

JWT의 구조는 3부분으로 나뉜다. header, payload, signature 

이 payload 부분에 개발자가 원하는 정보를 넣는 것이다. 

-> 나머지 header나 signature 부분에는 개발자가 정보를 넣고 싶어도 넣기 힘들듯하다.ㅋㅋ 

 

각각이 encoding 되어 나오는 정보ㅈ중에서 ey~ 로 시작하는 Payload의 부분이 바로 bearer 토큰의 모습과 같다. 

 

그리고 Payload에 담기는 claims도 3종류로 나뉘는데, 다음과 같다. 

1) Registered Claims 

JWT 규격에 따른 이름으로 tss(발급자), exp(만료시간), sub(주체), aud(청중)과 같은 정보가 들어간다.

2) Public Claims 

개발자가 정의 가능하며, 공개적인 사용이 가능하다.

3) Private Claims 

사용자 정의 클레임으로, 공개되지 않고 Private하게 주고받을때 사용된다. 

 

따라서 개발자는 payload에 원하는 정보를 담을 수 있으며 User<->application 간에 필요한 정보를 안전하게 교환할 수 있다. 

 

예시 

{
  "iss": "https://example.com",
  "exp": 1634567890,
  "sub": "1234567890",
  "username": "john.doe"
}

'Web' 카테고리의 다른 글

user-agent란?  (1) 2023.10.11
루프백(loopback) ip란?  (1) 2023.06.13