Skip to Content
Suffering builds character
아카이브18.spring SecurityOAuth부록토큰1.JSON Web Token

1.JSON Web Token

JSON Web Token은 RFC7519 스펙에 정의되어 있음

JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.

URL 파싱에 안전하고 압축된 형태로 표현된 토큰으로, 웹 상에서 서로 다른 두 당사자 간에 필요한 다양한 정보(Claim)들을 담고 있으며, 이러한 클레임은 JSON 형태로 인코딩되기 때문에 JSON Web Token이라고 함

이러한 JWT 토큰은 다음과 같이 보통 base64url 방식으로 인코딩되어 있음

인코딩된 JWT 예시

// Encoded eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

디코딩된 JWT 예시

JSON
// Decoded // HEADER:ALGORITHM & TOKEN TYPE { "alg": "HS256", "typ": "JWT" } // PAYLOAD:DATA { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } // VERIFY SIGNATURE HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), )
💡
Tip

그 외 다른 토큰의 종류

  1. OAuth 2.0 Token
  2. JWT

Access Token
리소스 접근 권한에 사용되는 토큰

ID Token
사용자의 인증 상태를 나타내는 토큰, 사용자 정보가 포함되며, 인증된 사용자에 대한 정보를 클라이언트에게 제공할 때 사용됨

Refresh Token
Access Token이 만료되었을 경우, 새로 발급받기 위해 사용되는 토큰

  1. SAML Token
  2. API Token
  3. Session Token
  4. Hardware / One-time password Tokens
Last updated on