웹 기술 기초
서명을 붙인 일반적인 JWT(JSON Web Token)에 대한 설명으로 올바른 것은?
- A페이로드는 서명 키로 암호화되어 있으므로, 비밀번호나 신용카드 번호를 넣어 보내도 도중에 읽힐 일은 없다
- B유효 기간이 지난 토큰이라도 서명이 올바르면 변조되지 않은 것이므로, 서버는 받아들여야 한다
- C헤더, 페이로드, 서명을 Base64URL로 인코딩하여 '.'으로 연결한 것으로, 서명으로 변조를 검출할 수 있지만 내용은 암호화되어 있지 않다
정답과 해설 보기
정답: C. 헤더, 페이로드, 서명을 Base64URL로 인코딩하여 '.'으로 연결한 것으로, 서명으로 변조를 검출할 수 있지만 내용은 암호화되어 있지 않다
JWT는 '헤더.페이로드.서명'의 세 부분으로 이루어지며, 헤더에는 서명 방식(예를 들어 HS256), 페이로드에는 이용자의 식별자나 유효 기간(exp) 등의 정보(클레임)가 들어갑니다. 서명은 헤더와 페이로드로부터 비밀 키를 사용하여 만들므로, 받은 서버는 내용이 변조되지 않았다는 것과 발행자를 확인할 수 있습니다. 다만 Base64URL은 암호가 아니며 누구나 원래대로 되돌려 읽을 수 있으므로, 비밀 정보는 넣지 않습니다. API로 보낼 때는 일반적으로 Authorization: Bearer 뒤에 토큰을 붙여 보냅니다.