HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🏪
TS Store
/
🔐
JWT
🔐

JWT

Person
완료율%
상태
완료
나의 블로그
Think Sharing (TS)
🖥️
JWT
 

주제

  • JWT 토큰 기본 개념
  • 세션 - 쿠키 방식의 차이
  • JWT 문제점 및 주의사항

목차

주제목차내용🏗️ Build Up💨What [JWT는 무엇인가]특징구조세션-쿠키 방식과 JWT 차이❓Why [왜 JWT인가]✅이해가 안돼는 부분📌 REFER
 

내용

주제목차내용🏗️ Build Up💨What [JWT는 무엇인가]특징구조세션-쿠키 방식과 JWT 차이❓Why [왜 JWT인가]✅이해가 안돼는 부분📌 REFER

🏗️ Build Up

  • HTTP는 connectless , satateless 한 특징으로 인해 지속적으로 인증된 사용자인지 구분하지 못한다.
  • 특히나 이러한 점 때문에 누가 누구인지 확인할 수 있는 방법은 개발자들이 직접 이 특징을 살려서 회원을 구분한다.
  • 그렇게 구분하는 방식이 세션-쿠키 방식과 JWT 토큰이 있다.
  • 주로 쓰는 방식 보통 세션-쿠키 방식이다
 

💨What [JWT는 무엇인가]

🔥
JSON 개체로 안전하게 정보를 전송하기 위한 개방형 표준 방법(RFC-7519)이다.

특징

  • 자가 수용적이다. [자체적으로 정보를 지니고 있음]
    • 내부 구조를 보면 왜 자가 수용적인지 알 수 있다.

구조

  • jwt토근은 . 을 구분자로 3가지 문자열로 구성이 된다.
    • notion image
  • header
    • typ : 토큰의 타입을 지정 (JWT)
    • alg : 해싱 알고리즘 (HMAC, SHA256, RSA)
      • 토큰 검증시 사용되는 signature 부분에 사용
  • payload
    • 토큰에 담을 주체적 정보들이 들어 있다.
    • Claim 이라고 부르고 이는 key, value 쌍으로 되어 있다.
    • Claim 종류
      1. 등록된 클레임
          • 토큰에 대한 정보를 담기위한 미리 정의된 집합이다.
          • 선택적으로 사용가능하지만 정보에 대한 유출에 유의 해야 한다.
            • notion image
      1. 공개 클레임
          • 사용자 정의 클레임으로, 공개용 정보 전달을 위해 사용됨
          • 충돌 방지를 위해 URI 포맷을 이용
      1. 비공개 클레임
      { "username": "whyWhale" }
      • 당사자 간 정보를 공유하기 위해 만들어졌다.
      • 공개 클레임과 달리 이름이 중복되어 충돌이 날 수 있으니 이점을 유의해야 한다.
  • signature
    • 메시지가 도중에 변경되었는지를 판단하기 위해 사용이 된다.
    • signature 사용
    • notion image
      추가적으로 개인 키로 서명된 토큰의 경우 JWT의 보낸 사람이 누구인지도 확인 할 수 있다.
       

세션-쿠키 방식과 JWT 차이

구분
세션-쿠키
토큰
보관
서버
토큰
정보 노출
X
O
무효화 방식
비교적 쉽게 무효화(서버측)
보관장소가 따로 없어 특정 사용자만을 무효화 시키기에 복잡한 로직이 필요
타임아웃 처리 방식
사용자가 일정시간 보내면 타임아웃 자동 갱신
한번 발급된 토큰 시간 연장할 수 없다. 그러므로 재발급 해야한다.

❓Why [왜 JWT인가]

  • 세션-쿠키 방식이나 JWT는 토큰이 탈취되면 답이 없다.
  • 하지만 JWT를 쓰는 핵심적인 이유는 공유 데이터베이스 없이 서버 자체에서 검증이 가능하고 다중 서버 환경에서도 큰 고민 없이 가용 가능한 점에서 편리하다
  • 하지만 JWT 비교적 세션-쿠키 방식보다 토큰 탈취에 대해 복잡성이 따른다.
    • 특히나 access token 의 경우 무효화 처리가 어렵다.

✅이해가 안돼는 부분

메모리에 저장하는데 GC에 의해 수거되는 경우는 어떤 경우인지 궁금하다
결국 메모리에 저장되어 지속적으로 체크할 건데 그게 안사라질 것 같은 예상이 든다
notion image
 

📌 REFER

  • 한쿸 자료
JWT 인증은 무엇이고 어떻게 사용해야 할까? | Popit
마이크로서비스 아키텍처가 많이 보급 되면서 클라이언트와 서버 간의 인증 상태를 유지하는 기존의 전통적인 서버 세션 방식과는 다른 클라이드 사이드 세션인 JWT(JSON Web Token) 방식이 많이 활용되고 있습니다. 필자도 처음에는 "마이크로 서비스에서는 인증은 주로 JWT를 사용한다" 라는 의견에 공감하면서 그냥 생각없이 사용하고 있었는데 한번은 정리해야 할 필요성을 느껴 정리해볼까 합니다.
JWT 인증은 무엇이고 어떻게 사용해야 할까? | Popit
https://www.popit.kr/jwt-%EC%9D%B8%EC%A6%9D%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C/?fbclid=IwAR2Ai2nw9VtCkRjqxMp-JgROeRwS55jlW3KYw4efWV0gXlp_NcIv3VfJZ-g&fs=e&s=cl
JWT 인증은 무엇이고 어떻게 사용해야 할까? | Popit
  • 외국 자료
JWT.IO - JSON Web Tokens Introduction
NEW: get the JWT Handbook for free and learn JWTs in depth! JSON Web Token (JWT) is an open standard ( RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed.
JWT.IO - JSON Web Tokens Introduction
https://jwt.io/introduction
JWT.IO - JSON Web Tokens Introduction