JWT 클레임 구조, 만료 시간(exp) 검증, 디지털 서명의 원리와 무상태 인증 시스템에서의 보안 주의사항을 점검합니다.
JSON Web Tokens(JWT)는 RESTful API와 현대 싱글 페이지 애플리케이션 보안 통신의 표준이 되었습니다. 상태를 저장하지 않고 클라이언트 인증 등 뛰어난 확장성을 보여주나, 올바른 지식이 없을 경우 중요한 시스템 위협이 될 수 있습니다.
JWT의 기본 구조
모든 JWT는 Header, Payload, Signature라는 세 부분으로 나뉩니다. 핵심적인 Payload에는 본질적인 클레임이 포함되어 있으며, 암호화되지 않고 Base64Url로 인코딩만 되어 있습니다. 따라서 비밀 정보가 노출되지 않도록 하는 것이 필수입니다.
암호학적 서명과 취약점
보안은 세 번째 세그먼트인 Signature에 크게 의존합니다. 토큰 검증은 서버에서 이루어집니다만, 취약점 중 "None 알고리즘 무시 공격", 즉 서명 자체를 우회하는 라이브러리 결함이나 무차별 대입하기 쉬운 약한 시크릿 키가 공격의 원인이 됩니다. 클라이언트 측에서 JWT 구조를 디버그하고 이를 보호하는 방법과 로컬 환경을 유지하는 방법을 반드시 숙지해야 합니다.