JWT는 유저를 인증하고 식별하기 위한 토큰(Token) 기반 인증입니다.
토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함됩니다.
RESTful과 같은 무상태(Stateless)인 환경에서 사용자 데이터를 주고받을 수 있게 됩니다.
세션(Session)을 사용하게 될 경우 쿠키 등을 통해 사용자를 식별하고 서버에 세션을 저장했지만, 토큰을 클라이언트에 저장하고 요청시 HTTP 헤더에 토큰을 첨부하는 것만으로도 단순하게 데이터를 요청하고 응답받을 수 있습니다.
구성은 헤더, 페이로드, 시그니처로 나뉩니다. 각 역할은 다음과 같습니다.
헤더: 토큰 타입, 암호화 알고리즘 명시
페이로드: JWT에 넣을 데이터, JWT 발급 / 만료일 등 명시
시그니처: 헤더, 페이로드가 변조 되었는지를 확인하는 역할
여기서 시그니처는 서명이라는 의미로 암호화하지 않고 변조 여부만을 확인하는 것이 JWT의 기본적인 구조입니다.