JWT(JSON Web Token) 쉽게 이해하기
JWT(JSON Web Token)이 Access Token으로 어떻게 사용되는지 간략히 이해하고자 합니다.
- JWT는 서버가 클라이언트에게 발급하기 전, 두 개의 순수한 JSON 객체(Header와 Payload) 상태로 존재합니다.
- Header (JSON 원본):
#alg: algorithm { "alg": "HS256", "typ": "JWT" } - Payload (JSON 원본):
#iat: issued at time #exp: expiration { "sub": "1234567890", "name": "홍길동", "iat": 1756454116, "exp": 1756457716 }
- Header (JSON 원본):
- Header와 Payload는 Base64Url 방식으로 인코딩되어 점(.)으로 이어집니다.
EncodedHeader.EncodedPayload
- EncodedHeader.EncodedPayload 문자열을 인증 서버가 가진 개인키(Private Key)와 지정된 알고리즘(예: RS256)을 이용해 디지털 서명(Signature)으로 암호화합니다.
- 디지털 서명 값 역시 Base64Url로 인코딩하여 맨 뒤에 붙입니다.
EncodedHeader.EncodedPayload.EncodedSignature
- API 서버는 ① EncodedHeader.EncodedPayload 문자열을 동일한 해시 알고리즘으로 해싱하여 자체 해시값을 구하고, ② EncodedSignature를 Base64Url로 디코딩한 뒤 인증 서버의 공개키(Public Key)로 복호화하여 나온 해시값과 비교/대조함으로써 토큰이 위조되지 않았음을 검증합니다.
