JWT란?

일뜻의 개발 하루·2024년 10월 30일
0

개념 원리 이해

목록 보기
3/4

혼자 이메일 인증 및 로그인 프로젝트를 만드는 중 JWT에 대한 개념이 명확하지 않아,
개념을 이해하고 기록해 둘겸, 내가 이해할 수 있게 최대한 나무 위키를 요약하였다. 자세한 정보는 나무위키에!

1.JWT란 무엇인가요?

JWT는 JSON WEB TOKEN의 약자로, 정보를 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 정의하는 개방형 표준이다.

쉽게 설명하면

  • 디지털 서명이 된 티켓이나 신분증과 같은 것
  • 사용자 인증 정보를 담고 있는 암호화된 문자열
  • 서버와 클라이언트 간에 안전하게 정보를 주고 받을 수 있는 방법

2. JWT를 사용하는 이유

2.1 기존 인증 방식의 문제점

  • 서버가 사용자의 정보를 계속 저장해야하는 세션 방식을 이용한다는 문제점
  • 서버 확장이 어렵다
  • 서버 메모리 사용량 증가

JWT의 장점

  1. 무상태(Stateless)
  • 서버가 사용자 정보를 저장할 필요가 없다.
  • 토큰 자체에 필요한 정보가 담겨져있다.
  1. 확장성
  • 서버를 여러 대로 확장하기 쉬움
  • 어떤 서버에서든 토큰을 확인하면 됨
  1. 보아성
  • 디지털 서명으로 위조 방지
  • HTTPS와 함께 사용하면 더욱 안전

JWT 구조

JWT는 세 부분으로 구성된다.
XXXXX.YYYYYY.ZZZZZZ

헤더에는 JWT에서 사용할 타입과 해싱 알고리즘이 담겨있다.
내용(Payload)에는 서버에서 첨부한 사용자 권한 정보와 데이터가 담겨 있다
서명(Signature)에는 헤더, 내용을 base64 url -safe encode한 이후 header에 명시된 해시함수를 적용해 개인키로 서명한 전자 서명이 담겨있다.

3. JWT vs 세션

세션 방식

  • 서버에 사용자 정보 저장
  • 메모리 사용량 큼
  • 구현이 상대적으로 간다

jwt 방식

  • 서버에 상태 저장x
  • 클라이언트가 정보 보관
  • 확장성이 좋음

JWT는 현대 웹 개발에서 매우 중요한 인증 방식. 적절히 사용하면 안전하고 효율적인 사용자 인증 시스템을 구축할 수 있다. 다만 이 보안 고려사항을 잘 지키고 적절한 사용 사례에 맞게 구현하는 것이 중요하다!

0개의 댓글