AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

JSON 웹 토큰(JWT)이란 무엇인가요?

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

보안

대상자

  • 웹/앱 개발자, 인증 시스템 설계자
  • 중급 이상의 보안 및 인증 관련 지식 보유자

핵심 요약

  • JWT는 Header.Payload.Signature 구조로 구성된 암호화된 JSON 데이터로, Base64Url로 인코딩됨
  • 사용자 인증 및 권한 부여를 위한 토큰 기반 인증 방식으로, Authorization 헤더에 Bearer token 형태로 전송
  • 보안 강화를 위해 HTTPS 사용, 시간 제한 설정, HttpOnly 쿠키 저장 권장

섹션별 세부 요약

1. JWT의 정의 및 기본 구조

  • JWT는 RFC 7519 표준에 따라 설계된 안전한 정보 전달 프로토콜
  • Header
  • alg (HS256, RS256 등)과 typ(JWT)으로 구성
  • Base64Url 인코딩
  • Payload
  • 사용자 정보(claims)를 포함, 수정 불가능하지만 해독 가능
  • Base64Url 인코딩
  • Signature
  • Header + Payload + 비밀키(또는 공개/비밀 키 쌍)로 생성
  • Base64Url 인코딩

2. JWT의 사용 흐름

  1. 사용자 로그인
  • 클라이언트가 사용자 인증 정보를 서버에 전송
  1. JWT 생성 및 발급
  • 서버가 인증 성공 시 사용자 정보를 포함한 JWT 생성
  • HMAC, RSA, ECDSA 등 알고리즘으로 서명
  1. JWT 저장 및 전송
  • 클라이언트가 JWT를 localStorage 또는 HttpOnly 쿠키에 저장
  • 보호된 API 요청 시 Authorization: Bearer 헤더에 포함
  1. JWT 검증
  • 서버가 토큰의 서명, 유효 기간, 구조 검증

3. 보안 고려사항

  • HTTPS 강제 사용
  • man-in-the-middle 공격 방지
  • 토큰 유효 기간 설정
  • exp 클레임으로 시간 제한 적용
  • 안전한 저장 방식
  • HttpOnly 쿠키 사용, localStorage 사용 금지
  • 암호화 알고리즘 선택
  • HS256(비대칭), RS256(대칭) 등 보안 강도 높은 알고리즘 사용 권장

결론

  • JWT는 간단한 구조와 높은 유연성을 갖지만, 보안 취약점이 있으므로 반드시 HTTPS, HttpOnly 쿠키, 시간 제한 적용
  • Authorization 헤더에 Bearer token 방식으로 전송하는 것이 표준