
토큰 Flow chart

토큰 발급과정

토큰 사용과정
토큰은 각각 **Base64Url인코딩(양방향)**된 Header, Payload, Signature 순서대로 . 으로 구분하여 연결된 문자열이다. 주목할 점은 데이터 무결성(변조 방지)를 위한 방식이라는 것
Header.Payload.Signature
실제 토큰 문자열
eyJhbGciOiJIUzI1NiJ9**. // 임의로 개행한 것임**
eyJuYW1lIjoidGVzdCIsImVtYWlsIjoidGVzdEB0ZXN0LmNvbSIsInN1YiI6IjEiLCJpYXQiOjE3NDIzNzQwMjIsImV4cCI6MTc0MjM3NzYyMn0.
z169LPkL1HNxhLxQERqvosPgDnDMAz1dxWRd-JfJaf0
각 파트를 json형식으로 본다면 아래와 같다.
Header 구조
alg : 서명 알고리즘 지정 (예: HS256, RS256)대칭키, 비대칭키 등을 선택한다.typ : 토큰 유형 (항상 “JWT”){
"alg": "HS256",
"typ": "JWT"
}
Registered Claim, Public Claim, Private Claim**이 있다.iss: 특정 발급자(서버)에서 생성된 토큰인지 확인sub (Subject): 사용자 식별자 (예: 사용자 ID)iat (Issued At): 토큰 발급 시간 (Unix timestamp)exp (Expiration): 토큰 만료 시간 (Unix timestamp)aud: 토큰 대상자(audience), 허용된 클라이언트인지 확인nbf: 토큰 활성 날짜(not before), 이 날이 지나기 전의 토큰은 활성화되지 않음jti: JWT 토큰 식별자(JWT ID), 중복 방지를 위해 사용하며, 일회용 토큰(Access Token), Blacklist 등에 사용{
"sub": "1234567890",
"iat": 1516239022,
"exp": 1716239022
}
HMACSHA256(
base64UrlEncode(header) +
"." +
base64UrlEncode(payload),
secret
)
exp(만료 시간), iss(발급자), aud(대상)는 보안상 필수로 포함하는 것이 좋음.