본문 바로가기

카테고리 없음

JWS, JWT 정리

[용어 정리]

- JWS (JSON Web Signature) : 서버에서 인증을 증거로 인증 정보를 서버의 private key 로 서명한 것을 Token 화 한것.

- JWE (JSON Web Encryption) : 서버와 클라이언트 간 암호화된 데이터를 Token 화 한것.

- JWK (JSON Web Key) : JWE 에서 payload encryption 에 쓰인 키를 Token 화 한것.

- JWT (JSON Web Token) : JWS or JWE


[실제 예제]

JWS 구조 : header(JSON) + payload(JSON) + signature

* signature = sign(header+payload)

JWS header: 

{

  "alg": "HS256",

  "typ": "JWT"

}

JWS payload:

{

  "sub": "1234567890",

  "name": "John Doe",

  "admin": true

}


JWT:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

Base64(header) = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Base64(payload) = eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9

Base64(signature) = TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

* sign key = Token 생성자의 private key (주로 인증 서버)



[JWS  인증 매커니즘]

1. 클라이언트 A 가 로그인

2. 서버에서는 payload 에 넣고 싶은 내용을 담은 후 (로그인한 사람의 정보, 접근 권한 등) 서명하고 Token 발행

3. 클라이언트는 다음 통신에서 Token을 함께 전달

4. 서버에서는 Token 수신후 서명 검증

5. 이후 정상 절차 수행


How does a JSON Web Token works