JWT는 웹 표준 (RFC 7519)으로 정의된 JSON 객체를 이용하여 클레임(claim)들을 안전하게 전송하기 위한 컴팩트하고 독립적인 방식입니다. 클레임은 엔티티(예: 사용자)와 추가 데이터를 서술합니다. 이 토큰은 디지털 서명되어 있어, 발급한 측의 인증과 토큰이 수정되지 않았다는 것을 검증할 수 있습니다.
JWT는 세 부분으로 구성됩니다.
헤더(Header): 토큰의 타입과 사용된 알고리즘을 지정합니다.
페이로드(Payload): 토큰에 담길 클레임(사용자의 정보 및 추가 데이터)을 포함합니다.
서명(Signature): 토큰의 유효성을 검증할 수 있는 서명입니다.
보안성: 디지털 서명이 포함되어 있어, 토큰의 데이터가 변경되지 않았는지 확인할 수 있습니다.
자가 수용성(Self-contained): 필요한 모든 정보를 자체적으로 갖고 있어, 데이터베이스 등 외부 저장소에 접근할 필요가 없습니다. 이는 API 호출 시 성능을 향상시킵니다.
확장성(Scalability): 세션 정보를 서버에 저장할 필요 없이 클라이언트 측에서 관리할 수 있어, 대규모 분산 시스템에서의 확장성이 우수합니다.
유연성: 다양한 유형의 정보를 안전하게 전달할 수 있으며, 여러 언어와 플랫폼에서 지원되므로 범용성이 높습니다.
인증(Authentication): 사용자가 로그인을 한 후 서버는 사용자의 인증 정보를 담은 JWT를 발급하고, 사용자는 이후의 요청에 이 토큰을 첨부하여 인증을 유지합니다.
정보 교환(Information Exchange): 두 당사자 간에 안전하게 정보를 교환할 수 있습니다. JWT는 정보가 보내는 동안 수정되지 않았다는 것을 보증합니다.