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 예시
// 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),
)그 외 다른 토큰의 종류
- OAuth 2.0 Token
- JWT
Access Token
리소스 접근 권한에 사용되는 토큰
ID Token
사용자의 인증 상태를 나타내는 토큰, 사용자 정보가 포함되며, 인증된 사용자에 대한 정보를 클라이언트에게 제공할 때 사용됨
Refresh Token
Access Token이 만료되었을 경우, 새로 발급받기 위해 사용되는 토큰
- SAML Token
- API Token
- Session Token
- Hardware / One-time password Tokens