JWT란?
JSON Web Token의 약자로 전자 서명(어떤 데이터가 정말 그 사람의 것이 맞는지 보장해주는것) 된 속성 정보(Claim)를 JSON 데이터 구조로 표현한 토큰.
일반적으로 클라이언트와 서버, 서비스와 서비스 사이 통신 시 권한 인가(Authoriztion)를 위해 사용하는 토큰이다. URL에 대해 안전한 문자열로 구성되어 있기 때문에 HTTP 어디든 위치할 수 있다.
JWT 는 어떤 상황에서 사용될까?
다음과 같은 상황에서 JWT 가 유용하게 사용 될 수 있습니다:
- 회원 인증:
유저가 로그인을 하면, 서버는 유저의 정보를 기반한 토큰을 발급하여 유저에게 전달해준다. 그 후, 유저가 서버에 요청을 할 때마다 JWT를 포함하여 전달한다. 서버가 클라이언트에게 요청을 받을 때 마다, 해당 토큰이 유효하고 인증됐는지 검증을 하고, 유저가 요청한 작업에 권한이 있는지 확인한 후 작업을 처리한다.
- 정보 교류:
두 개체 사이에서 안정성있게 정보를 교환하기에 좋은 방법니다. 그 이유는, 정보가 서명(sign)이 되어 있기 때문에 정보를 보낸이가 바뀌진 않았는지, 정보가 도중에 조작되지 않았는지 검증할 수 있다.
JWT의 구조

Header는 토큰의 타입과 해시 암호화 알고리즘으로 구성되어 있다.
{
"typ": "JWT",
"alg": "HS256"
}
- typ : 토큰의 타입
- alg : 해시 알고리즘. 해시 알고리즘은 토큰을 검증 할 때 사용되는 signature 부분에서 사용된다.
🔹내용(payload)
- 토큰에 담을 클레임(claim) 정보를 포함하고 있다.
- 여기에 담는 정보의 한 '조각'을 클레임(claim)이라고 부르고, 이는 name/valu의 한 쌍으로 이뤄져있다. 토큰에는 여러개의 클레임을 넣을 수 있다.
- 등록된 (registered) 클레임
- 공개 (public) 클레임
- 비공개 (private) 클레임
🔹서명(signature)
서명(signature)은 헤더의 인코딩값과, 정보의 인코딩값을 합친 후 scret key를 포함하여 암호하되어 있다.
📚 Reference
[JWT] JSON Web Token 소개 및 구조
JWT를 소개합니다. : TOAST Meetup
JWT (JSON Web Token) 이해하기와 활용 방안 - Opennaru, Inc.