JWT(JSON Web Token) 쉽게 이해하기

JWT(JSON Web Token)이 Access Token으로 어떻게 사용되는지 간략히 이해하고자 합니다.

  1. 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
      }
      
  2. Header와 Payload는 Base64Url 방식으로 인코딩되어 점(.)으로 이어집니다.
    EncodedHeader.EncodedPayload
    
  3. EncodedHeader.EncodedPayload 문자열을 인증 서버가 가진 개인키(Private Key)와 지정된 알고리즘(예: RS256)을 이용해 디지털 서명(Signature)으로 암호화합니다.
  4. 디지털 서명 값 역시 Base64Url로 인코딩하여 맨 뒤에 붙입니다.
    EncodedHeader.EncodedPayload.EncodedSignature
    
  5. API 서버는 ① EncodedHeader.EncodedPayload 문자열을 동일한 해시 알고리즘으로 해싱하여 자체 해시값을 구하고, ② EncodedSignature를 Base64Url로 디코딩한 뒤 인증 서버의 공개키(Public Key)로 복호화하여 나온 해시값과 비교/대조함으로써 토큰이 위조되지 않았음을 검증합니다.

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다