JWT (JSON Web Token) 설명

2025. 9. 21. 23:33·개발 아카이브/개발 관련 지식
반응형

JWT 기본 구조

JWT는 점(.)으로 구분된 3개 부분으로 이루어져 있다.

xxxxx.yyyyy.zzzzz

각 부분은 Base64URL로 인코딩되어 있다.

1. Header (헤더)

역할: 토큰의 타입과 서명 알고리즘 정보

{
  "alg": "HS256",
  "typ": "JWT"
}
  • alg: 서명에 사용된 알고리즘 (HS256, RS256, ES256 등)
  • typ: 토큰 타입 (항상 "JWT")

2. Payload (페이로드)

역할: 실제 전달하고자 하는 정보(클레임 Claims)

{
  "sub": "user123",
  "name": "김철수",
  "role": "admin",
  "iat": 1516239022,
  "exp": 1516242622
}

클레임 종류

  • Registered Claims: 표준 클레임 (sub, exp, iat, iss 등)
  • Public Claims: 공개적으로 정의된 클레임
  • Private Claims: 사용자 정의 클레임 (role, permissions 등)

3. Signature (서명)

역할: 토큰의 무결성 검증

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret
)

서명은 헤더와 페이로드를 합친 후 비밀키로 암호화한 값입니다.

실제 JWT 예시

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

.으로 구분되어 있는거 분해하면 아래로 나누어짐.

  • Header: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
  • Payload: eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
  • Signature: SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

JWT의 특징

  1. Stateless: 서버에 세션 정보를 저장하지 않음
  2. Self-contained: 토큰 자체에 모든 필요한 정보가 포함
  3. URL-safe: URL, HTTP 헤더에서 안전하게 사용 가능
  4. 투명성: Base64로 인코딩되어 있어 내용을 쉽게 확인 가능

보안 고려사항

  • 페이로드는 암호화되지 않음 → 민감한 정보 저장 금지
  • 서명으로만 무결성 검증 → 변조는 방지하지만 내용은 노출됨
  • 만료시간 설정 필수 → 토큰 탈취 시 피해 최소화
  • HTTPS 사용 권장 → 토큰 전송 시 암호화

JWT.io

JWT.io는 JWT(JSON Web Token)를 위한 공식 웹사이트. Auth0에서 운영하는 무료 온라인 도구다.

https://www.jwt.io/

 

JSON Web Tokens - jwt.io

JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signature (JWS).

www.jwt.io

이 사이트에서 JWT Debugger랑 라이브러리와 JWT 표준 문서 등이 있다.

여기서 JWT를 넣으면 Decoder를 통해 분해하거나 Encoder를 통해 인코딩을 할 수 있다.

 

라이브러리도 어떤것들이 있는지 볼 수 있다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'개발 아카이브 > 개발 관련 지식' 카테고리의 다른 글

Claude Code Usage Monitor for macOS - 메뉴바에서 클로드 토큰 사용량 실시간 모니터링  (3) 2025.07.31
iCalendar 기본 문법  (0) 2025.02.01
REST (Representational State Transfer)란 무엇인가?  (1) 2023.07.31
[노션 API] 노션 API 연동으로 데이터베이스 사용하기  (3) 2023.04.09
자바스크립트 엔진인 V8에 대해 알아보자  (1) 2023.02.26
'개발 아카이브/개발 관련 지식' 카테고리의 다른 글
  • Claude Code Usage Monitor for macOS - 메뉴바에서 클로드 토큰 사용량 실시간 모니터링
  • iCalendar 기본 문법
  • REST (Representational State Transfer)란 무엇인가?
  • [노션 API] 노션 API 연동으로 데이터베이스 사용하기
운클라우드
운클라우드
프로그래밍, 디자인 및 각종 이야기와 리뷰를 담는 블로그
  • 운클라우드
    Wooncloud Blog
    운클라우드
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 이야기
        • 일기
        • 개발일지
        • 제품 리뷰
        • 기타
        • 정보처리기사
      • 정보
        • 유용한 사이트
      • 개발 아카이브 N
        • AI, 인공지능
        • Javascript
        • JAVA N
        • DATABASE
        • 개발 관련 지식 N
        • 라이브러리
        • AWS, Cloud, Server
        • 코드 저장소
        • HTML, CSS
  • 블로그 메뉴

    • 홈
    • 방명록
    • 운구름 웹
    • 벨로그
    • 깃허브
    • 리틀리
    • 도시부엉
  • 링크

    • 홈페이지
    • 깃허브
    • 벨로그
  • 공지사항

  • 인기 글

  • 태그

    CSS
    코드저장소
    javascript
    회고
    spring
    폰트
    라이브러리
    자바
    html
    자바스크립트
    스터디
    웹디자인
    Java
    SQL
    튜닝
    스프링
    Ai
    정보처리기사
    API
    json
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
운클라우드
JWT (JSON Web Token) 설명
상단으로

티스토리툴바