JWT +JWS
JWT와 JWS 비교
구분 | JWT (JSON Web Token) | JWS (JSON Web Signature) |
---|---|---|
정의 | JSON 형식의 claims(정보)를 안전하게 표현하는 토큰 포맷 | 데이터(주로 JWT)를 디지털 서명으로 무결성 보호하는 방식 |
구조 | Header, Payload, (Signature 또는 암호화) | Header, Payload, Signature |
목적 | 정보(Claims) 전달 및 인증/인가 등 | 데이터 위변조 방지(무결성 보장) |
서명/암호화 | 서명(JWS), 암호화(JWE), 둘 다 또는 없음 가능 | 반드시 서명만 지원, 암호화는 지원하지 않음 |
Payload 형식 | 반드시 JSON 객체 | 어떤 바이너리든 가능(JSON, 바이너리, 텍스트 등) |
사용 예시 | 인증 토큰, 정보 전달 등 | JWT의 서명, 일반 데이터의 서명 등 |
상세 설명
- JWT란? JWT는 JSON 객체로 구성된 claims(정보 묶음)을 안전하게 표현하는 표준 포맷입니다. JWT는 서명(JWS 구조) 또는 암호화(JWE 구조)를 통해 무결성 또는 기밀성을 보장할 수 있습니다. 즉, JWT는 JWS 또는 JWE 구조로 만들어질 수 있으며, 가장 일반적인 JWT는 JWS 구조(서명된 JWT)입니다1234.
- JWS란? JWS는 데이터(주로 JWT의 payload)를 디지털 서명하여, 위변조되지 않았음을 증명하는 표준입니다. JWS는 Header, Payload, Signature 세 부분으로 구성되며, 서명 알고리즘(HMAC, RSA, ECDSA 등)을 사용합니다. JWS의 Payload는 반드시 JSON일 필요는 없으며, 바이너리 등 다양한 형식이 가능합니다1534.
- 관계
- 보안성
- JWS는 서명만 지원하므로, 누구나 Payload를 볼 수 있지만 위변조 여부는 검증 가능합니다.
- JWE는 암호화를 통해 Payload 자체를 숨길 수 있습니다3.
요약
- JWT는 정보를 안전하게 표현하는 “컨테이너"이며,
- JWS는 그 컨테이너(혹은 임의의 데이터)에 “서명"을 부여하는 방식입니다.
- JWT의 가장 흔한 구현이 JWS 구조(서명된 JWT)입니다.
- JWS는 JSON뿐 아니라 다양한 데이터 형식을 서명할 수 있습니다134.
-
https://stackoverflow.com/questions/27640930/what-is-the-difference-between-json-web-signature-jws-and-json-web-token-jwt ↩︎ ↩︎ ↩︎ ↩︎
-
https://www.codecurated.com/blog/introduction-to-jwt-jws-jwe-jwa-jwk/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
https://cloud.google.com/apigee/docs/api-platform/reference/policies/jwt-policies-overview ↩︎ ↩︎ ↩︎