본문 바로가기
Backend/웹기초

[JWT] jwt란 무엇인가?

by JINJINC 2025. 2. 26.
728x90
반응형

JWT란 무엇인가?

JWT는 JSON Web Token의 약자로, 두 시스템 간에 정보를 안전하게 전송하기 위해 사용되는 토큰 기반 인증 방식입니다. 예를 들어, 클라이언트와 서버 간

에 인증 정보나 사용자 상태를 유지하고 싶을 때 JWT를 활용합니다.

 

 

JWT의 구조

JWT는 세 부분으로 구성됩니다:

  • Header (헤더): 토큰의 타입과 해싱 알고리즘 정보를 담고 있습니다. 보통 'alg' (알고리즘)와 'typ' (타입)이라는 두 가지 속성이 포함되며, 예를 들어, {"alg": "HS256", "typ": "JWT"} 형태입니다.
  • Payload (페이로드): 주로 사용자 정보나 데이터(claims)를 포함하는 부분입니다. 여기에는 사용자 ID, 역할, 토큰 만료 시간 등의 정보가 담겨 있습니다.
  • Signature (서명): 헤더와 페이로드의 내용을 해싱한 뒤, 비밀키로 서명한 부분입니다. 이 서명을 통해 데이터가 위변조되지 않았음을 확인할 수 있습니다.

 

JWT의 작동 방식

JWT는 클라이언트가 서버에 인증 요청을 보내면 서버에서 토큰을 발급합니다. 이 발급된 토큰은 클라이언트에 저장되어 있으며, 이후 요청을 보낼 때 이 토큰을 포함합니다. 서버는 토큰을 검증하여 클라이언트가 올바른 사용자임을 확인합니다. 이를 통해 세션을 유지하지 않고도 사용자 인증을 할 수 있어 서버 부하가 줄어들고 확장성이 높아집니다.

 

JWT의 장점과 단점

  • 장점:
    • 확장성: 서버에 세션을 저장할 필요가 없으므로 서버 확장에 유리합니다.
    • 독립적 인증: 각 요청에 대해 JWT를 포함하므로 상태를 서버에 저장할 필요가 없습니다.
  • 단점:
    • 보안 위험: JWT가 한번 발급되면 만료 전까지는 유효합니다. 따라서 토큰이 탈취당하면 위험할 수 있습니다.
    • Payload 노출: JWT는 Base64로 인코딩되므로, 암호화된 것이 아니기 때문에 누구든 Payload 부분을 디코딩할 수 있습니다. 민감한 정보는 포함하면 안 됩니다.
728x90
반응형

'Backend > 웹기초' 카테고리의 다른 글

REST API란?  (3) 2025.01.03
[HTTP] 1. 인코딩과 포트  (1) 2025.01.02

댓글