Jwx
1. JWT (JSON Web Token)
JWT는 인증 및 데이터 교환을 위해 JSON 객체를 안전하게 전송하는 데 사용됩니다. 세 가지 부분으로 구성됩니다: Header, Payload, Signature.
예시 (JWT)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
구조:
-
Header (Base64Url 인코딩):
{ "alg": "HS256", "typ": "JWT" }Base64Url 인코딩:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 -
Payload (Base64Url 인코딩):
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }Base64Url 인코딩:
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ -
Signature:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret )결과:
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
2. JWS (JSON Web Signature)
JWS는 데이터에 서명을 추가하여 무결성을 보장합니다. JWT도 서명을 포함할 경우 JWS 형식의 데이터입니다.
예시 (JWS)
eyJhbGciOiJIUzI1NiJ9.eyJleGFtcGxlIjoidGVzdCJ9.G1X8LqHxAsoLVK4T_XfUd2LR8PjyF4bXAdTwU4ZnhzE
구조:
-
Header (Base64Url 인코딩):
{ "alg": "HS256" }Base64Url 인코딩:
eyJhbGciOiJIUzI1NiJ9 -
Payload (Base64Url 인코딩):
{ "example": "test" }Base64Url 인코딩:
eyJleGFtcGxlIjoidGVzdCJ9 -
Signature:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret )결과:
G1X8LqHxAsoLVK4T_XfUd2LR8PjyF4bXAdTwU4ZnhzE
3. JWE (JSON Web Encryption)
JWE는 JSON 데이터를 암호화합니다. 암호화된 데이터는 Header, Encrypted Key, Initialization Vector, Ciphertext, Authentication Tag로 구성됩니다.
예시 (JWE)
eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.
QmFzZTY0RW5jcnlwdGVkS2V5.
QmFzZTY0SXY.
QmFzZTY0Q2lwaGVydGV4dA.
QmFzZTY0QXV0aFRhZw
구조:
-
Header:
{ "alg": "RSA1_5", "enc": "A128CBC-HS256" }Base64Url 인코딩:
eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0 -
Encrypted Key:
Base64-encoded Encrypted Key -
Initialization Vector (IV):
Base64-encoded IV -
Ciphertext:
Base64-encoded Ciphertext -
Authentication Tag:
Base64-encoded Tag
4. JWK (JSON Web Key)
JWK는 공개 키 또는 비밀 키를 JSON 형식으로 표현합니다.
예시 (JWK)
{
"kty": "RSA",
"e": "AQAB",
"n": "0vx7agoebGc...0yzQ",
"alg": "RS256",
"kid": "2011-04-29"
}
구조:
kty: 키 유형 (예:RSA,EC,oct등)e: 공개 키의 지수 (Base64Url 인코딩)n: 공개 키의 모듈러스 (Base64Url 인코딩)alg: 알고리즘 (예:RS256,HS256등)kid: 키 식별자 (Key ID)
간단 요약
| 형식 | 설명 |
|---|---|
| JWT | 서명 또는 암호화된 데이터 전송에 사용되는 표준. |
| JWS | JSON 데이터를 서명하여 무결성을 보장. |
| JWE | JSON 데이터를 암호화하여 기밀성을 보장. |
| JWK | 공개/비밀 키를 JSON 형식으로 표현. |
필요에 따라 각 형식을 사용하여 인증, 데이터 보호, 키 관리 등을 구현할 수 있습니다.
라고 한다.