Skip to content

JWT

Posted on:2024년 2월 3일 at 오후 02:25

TOC

JWT

📌JWT란 무엇인가

📌JWT 구조

https://jwt.io/에 가면 jwt 토큰을 만들어 볼 수 있다.
JWT는 아래와 같이 xxxx.yyyy.zzzz 세 구조로 나뉜다.
image

image

payload

image

signature

image

📌정리

  1. header에는 어떠한 알고리즘이 사용되었는지 정보가 들어간다.
  2. payload에는 실제 전달하려는 데이터가 들어간다.
  3. signature에서 위의 정보들이 변조되지 않았다는 것을 확인하기 위해 header와 payload를 이용해서 생성한 값이 들어간다.

📌JWT 동작 방식

  1. 클라이언트에서 사용자가 로그인등을 할 때 OpenID Connect 같은 프로토콜을 따르면 ‘/oauth/authorize’와 같은 엔드포인트로 요청하며 이 과정에서 authorization code flow 등의 방식으로 진행될 수 있다 | authorization code flow : oauth2.0 인증 프로토콜에서 일반적으로 사용되는 인증 방식이다.
  2. 사용자가 성공적으로 인증하면 서버 쪽에서 JWT 형태의 access token을 발급하여 클라이언트에 전달해준다.
  3. 그 후 클라이언트에서 서버로 요청할 때 마다 해당 access token(JWT)를 함께 보내주게 되고, 서버 쪽에서 해당 JWT가 유효한 지 검사하여 요청 유형(API 호출 등)에 따른 권한 확인 및 처리 등을 진행하게 된다.

📌왜 JWT을 사용해야 하는가

  1. JSON은 XML보다 간결하여 인코딩될 때 크기가 더 작아, JWT는 SAML보다 더 컴팩트하다. 이로 인해 JWT는 HTML과 HTTP 환경에서 전달하기에 좋다.
  2. 보안 측면에서 SWT는 HMAC 알고리즘을 사용하여 공유 비밀로만 대칭적으로 서명될 수 있지만, JWT와 SAML 토큰은 X.509 인증서 형태의 공개/비공개 키 쌍을 사용하여 서명할 수 있다.
  3. 대부분의 프로그래밍 언어에서 JSON 파서를 일반적으로 사용하며, 이것들은 직접 객체로 매핑 된다.반면 XML은 자연스러운 문서-객체 매핑이 없어 JWT를 다루기가 더 쉽다.
  4. JWT는 인터넷 규모에서 사용되며, 여러 플랫폼(특히 모바일)에서 클라이언트 측 JSON 웹 토큰 처리의 용이성을 강조한다.
  5. 인코딩된 JWT와 SAML의 길이를 비교하면, JWT가 더 짧고 관리하기 쉽다.

참고 : https://jwt.io/introduction