Computer Science

JWT(JSON Web Token)

foreverWon 2025. 9. 29. 11:49
목차

    JWT란?

    • 데이터를 안전하고 간결하게 전송하기 위해 고안된 인터넷 표준 인증 방식
    • 토큰 기반 인증에서 범용적으로 사용됨

    JWT 구조

    다음과 같이 세 부분으로 나뉘고, 각각은 .으로 구분됨

    • Header (헤더) : 어떤 알고리즘으로 서명했는지, 어떤 타입의 토큰인지 정의
    • Payload (페이로드) : 사용자 정보와 클레임(Claim) 데이터가 담김
    • Signature (서명) : 헤더와 페이로드가 변조되지 않았음을 검증

    JWT 동작 흐름

    Access Token / Refresh Token

    구분 Access Token Refresh Token
    목적 API 요청 시 인증/인가 Access Token 재발급
    유효 기간 짧음 (분~시간 단위) 김 (일~주 단위)
    보관 위치 보통 메모리/스토리지 안전하게 보관 필요
    • Access 토큰 → 실제 API 요청에 사용
    • Refresh 토큰 → Access 토큰 재발급 용도

    고려사항

    1. 민감한 정보 포함 금지
      • JWT는 Base64URL로 인코딩되어 있을 뿐 암호화 X
      • 따라서 토큰 안에 민감한 정보를 절대로 넣지 말아야 함
    2. 토큰 만료 시간 설정
    3. HTTPS 사용
      • JWT는 네트워크를 통해 전달되므로 반드시 HTTPS를 통해 암호화된 채널에서만 전송
    4. 저장 위치 주의
      • 로컬 스토리지 대신 HTTPOnly 쿠키 또는 세션 스토리지 사용 권장
      • 로컬 스토리지는 XSS 공격에 취약
    5. 토큰 무효화 전략
      • 기본적으로 JWT는 발급 후 만료 전까지 무효화 불가
      • 이를 보완하기 위해 서버 측에서 블랙리스트를 관리하거나 Redis 같은 인메모리 DB 활용 가능
    728x90