JWT(JSON Web Token)는 두 개체 간에 정보를 안전하게 전송하기 위해 사용하는 간단하고 자가 포함적인 방식의 토큰입니다. 주로 웹 애플리케이션에서 인증(Authentication) 및 권한 부여(Authorization)를 위해 사용됩니다.
점(.)으로 구분된 세 부분으로 구성됩니다.
헤더(Header)
페이로드(Payload)
서명(Signature)
<header>.<payload>.<signature>
헤더는 일반적으로 두 가지 정보를 포함합니다:
토큰의 타입(예: JWT)
서명 알고리즘(예: HS256, RS256)
{
"alg": "HS256",
"typ": "JWT"
}
페이로드는 토큰에 담을 클레임(Claims)을 포함하며, 이는 사용자에 대한 정보나 메타데이터입니다. 클레임은 다음과 같은 종류가 있습니다:
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
서명은 토큰의 무결성을 보장하기 위해 사용됩니다. 서명은 인코딩된 헤더와 페이로드, 그리고 비밀 키를 이용해 생성됩니다.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
JWT의 사용 사례
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c