JWT (JSON Web Token)
JWT
JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object.
JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA.
사용
Authorization: Bearer <token>
Authorization
- 로그인 시에 사용 (Single Sign on)
- 오버헤드가 적고 다른 도메인에서도 유연하게 동작하기 때문에 사용
Information Exchange
- 정보를 안전하게 전달할 수 있는 방법
- RSA 등의 공개키로 암호화 시 sender를 식별할 수 있다.
JWT structure
<header>.<payload>.<signature>
- Header : 토큰 타입(JWT)과 사용된 사인 알고리즘 명시, base64로 인코딩
- Payload : 토큰에 들어갈 정보(클레임)가 들어간다.
- Signature : Hash(헤더의 인코딩값 + ‘.’ + 페이로드의 인코딩값)
- 데이터 유출 : header, payload는 누구나 디코딩이 가능
클레임 (claim)
- 하나의 클레임은 key-value pair
- registered claim : set of predefined claims
- public claim : 마음대로 정의 가능하지만, 충돌 방지를 위해 URL 형식을 사용한다.
- private claim : 정보의 공유를 위해 사용 (실제 사용 데이터)
- 보통 라이브러리를 사용 시 private claim만 작성하면 된다.
출처
jwt 홈페이지