본문 바로가기
마이데이터/마이데이터 용어

JWT, JWS 정리

by 몰라닉네임 2023. 9. 6.

용어 정리

- JWT (JSON Web Token) : 인터페이스 역할을 해주는 추상적인 개념이고 실제 구현은 JWS와 JWE로 나누어진다. 

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

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


JWT

인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다. 그리고 JWT 기반 인증은 JWT 토큰(Access Token)을 TTP 헤더에 실어 서버가 클라이언트를 식별하는 방법이다. 

 

토큰 인증 신뢰성을 가지는 이유 

  • 서버는 토큰 안에 들어있는 정보가 무엇인지 아는게 중요한 것이 아니라 해당 토큰이 유효한 토근인지 확인하는 것이 중요하기 때문에 , 클라이언트로부터 받은 JWT의 header, payload를 서버의  key 값을 이용해 시그니처를 다시 만들고 이를 비교하며 일채 했을 경우 인증을 통과시킨다.
  • (TIP)  JWT은 서명(인증)이 목적이다.
    JWT는 Base64로 암호화를 하기 때문에 디버거를 사용해서 인코딩된 JWT를 1초만에 복호화할 수 있다.
    복호화 하면 사용자의 데이터를 담은 Payload 부분이 그대로 노출되어 버린다. 그래서 페이로드에는 비밀번호와 같은 민감한 정보는 넣지 말아야 한다.
    그럼 토큰 인증 방식 자체가 빛 좋은 개살구라고 생각할수도 있지만, 토큰의 진짜 목적은 정보 보호가 아닌, 위조 방지이다.
    바로 위에서 소개했듯이, 시그니처에 사용된 비밀키가 노출되지 않는이상 데이터를 위조해도 시그니처 부분에서 바로 걸러지기 때문이다.

JWT 장단점 정리

 


JWS

-Header, Payload, Signature로 구성되며, Payload 영역에 발급자, 유효 기간 등 발급정보를 저장하고, Signature 영역의 전자서명을 통해 위변조 여부를 확인

 

JWS 구조 : Header (JSON)+ Payload(JSON) + Signature

 

[실제 예제]

  • alg : 서명 암호화 알고리즘(ex: HMAC SHA256, RSA)
  • typ : 토큰 유형

Payload

  • 토큰에서 사용할 정보의 조각들인 Claim 이 담겨있다.

Signature

  • Header 및 Payload를 Base64 인코딩 후 암호화 기술을 이용하여 서명함으로써 접근토큰의 무결성 검증

 

jws 인증 메커니즘

1. Client A가 로그인

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

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

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

5. 이후 정상 절차 수행

 

 

session 기반 token 인증 & JWT 인증 비교

두가지 인증 방식 비교하면

session 인증 대비 JWT 인증이 토큰 저장소를 따로 마련하지 않아도 되고, 절차적으로 편해보일 수 있지만, 

각 방식마다 장단점이 있다. 

-> 더 자세한 사항은 참고 

session 기반 token 인증

https://blog.toycrane.xyz/%ED%86%A0%ED%81%B0%EC%9C%BC%EB%A1%9C-%EA%B3%A0%EA%B0%9D-%EC%9D%B8%EC%A6%9D%ED%95%98%EA%B8%B0-639e6be65735

 

 

 

참고 (JWT, JWS)

'마이데이터 > 마이데이터 용어' 카테고리의 다른 글

API Gateway란  (0) 2023.09.11
Access Token & Refresh Token  (0) 2023.09.08
공동인증과 사설인증 차이  (0) 2023.09.07
OAuth2.0 마이데이터  (0) 2023.09.06
TLS & mTLS  (0) 2023.09.05