[네트워크] JWT 토큰

2023. 7. 17. 14:45·CS 지식/[네트워크]
목차
  1. JWT 토큰
  2. 1) 헤더(Header)
  3. 2) 내용(Payload)
  4. 3) 서명(Signature)
  5. 주의사항
  • Claim : key-value 형식으로 이루어진 한 쌍의 정보

JWT 토큰

  • JSON 포맷을 이용하는 Claim 기반의 웹 토큰
  • 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달함

1) 헤더(Header)

  • 토큰의 타입과 해시 암호화 알고리즘(방식지정)으로 이루어져 있음
  • alg : 서명 암호화 알고리즘(ex: HMAC SHA256, RSA)
  • typ : 토큰 유형

 

2) 내용(Payload)

  • 토큰에 사용자가 담고자 하는 정보를 담음
  • 내용에는 Claim이 담겨있고, JSON(Key/Value) 형태의 한 쌍으로 이루어져 있음
  • 클레임 단위
    • 등록된 클레임 (Registered Claim), 공개 클레임 (Public Claim), 비공개 클레임 (Private Claim)
    • 1) 등록된 클레임 (Registered Claim)
      • JWT 사양에 이미 정의된 클레임
      • iss : Issuer. 토큰 발급자
      • sub : Subject. 토큰 제목
      • aud : Audience. 토큰 대상자
      • exp : Expiration Time. 토큰 만료 시각. Numeric Date 형식.
      • nbf : Not Before. 토큰의 활성 시각. 쉽게 말해, 이 시각 전에는 토큰이 유효하지 않다는 의미, Numeric Date 형식
      • iat : Issued At. 토큰이 발급된 시각. Numeric Date 형식. 이 값으로 토큰이 발급된지 얼마나 오래됐는지 확인할 수 있음
      • jti JWT ID. JWT 의 식별자
      2) 공개 클레임 (Public Claim)
      • JWT를 사용하는 사람들에 의해 정의되는 클레임
      • 충돌 방지를 위해 URI 형태로 이름을 짓거나, IANA JSON Web Token Claims Registry 라는 곳에 직접 클레임을 등록
      3) 비공개 클레임 (Private Claim)
      • 서버와 클라이언트 사이에서만 협의된 클레임
      • 공개 클레임과 충돌이 일어나지 않게 사용하면 됨

3) 서명(Signature)

  • 토큰을 인코딩하거나 유효성 검증할 때 사용하는 고유한 암호화 코드
  • 헤더와 내용의 값을 인코딩함

 

주의사항

  • 무상태(Stateless) 한 특징을 가지고 있음
  • 서버에서는 아무런 정보도 가지고 있지 않으며, 토큰 자체의 만료일자까지 토큰 자신이 가지고 있음
  • 누군가 토큰을 탈취해간다면 누구나 토큰을 탈취 당한 사람의 계정에 접근할 수 있게 됨
  • 하지만, 서버에서는 JWT 가 만료될 때 까지 아무런 조치도 취할 수 없으며, 그저 바라만보고 있어야 함
  • 즉, 이미 발행된 토큰에 대해 서버는 아무런 제어도 할 수 없음

⇒ 취약점을 막기 위해 현재는 많은 서비스들이 Access Token 과 Refresh Token 을 함께 사용

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

'CS 지식 > [네트워크]' 카테고리의 다른 글

[네트워크] Connection Timeout과 Read Timeout  (0) 2023.07.17
[네트워크] DNS  (0) 2023.07.17
[네트워크] 공인(public) IP와 사설(private) IP  (0) 2023.07.17
[네트워크] 세션 기반 인증 & 토큰 기반 인증  (1) 2023.07.17
[네트워크] 쿠키 & 세션  (1) 2023.07.17
  1. JWT 토큰
  2. 1) 헤더(Header)
  3. 2) 내용(Payload)
  4. 3) 서명(Signature)
  5. 주의사항
'CS 지식/[네트워크]' 카테고리의 다른 글
  • [네트워크] Connection Timeout과 Read Timeout
  • [네트워크] DNS
  • [네트워크] 공인(public) IP와 사설(private) IP
  • [네트워크] 세션 기반 인증 & 토큰 기반 인증
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (829)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (445)
        • 백준[JAVA] (108)
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    Java
    자바
    python
    Flutter
    JPA
    리눅스마스터
    baekjoon
    programmers
    스프링부트
    리눅스
    CS
    CS지식
    데이터
    Spring Security
    backjoon
    시큐리티
    postgresql
    Linux
    백준
    Oracle
    플러터
    springboot
    프로그래머스
    데이터베이스
    pcce 기출문제
    스프링 부트 쇼핑몰 프로젝트 with JPA
    리눅스마스터 1급
    DB
    스프링
    spring
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[네트워크] JWT 토큰

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.