웹 기술 기초

서명을 붙인 일반적인 JWT(JSON Web Token)에 대한 설명으로 올바른 것은?

  1. A페이로드는 서명 키로 암호화되어 있으므로, 비밀번호나 신용카드 번호를 넣어 보내도 도중에 읽힐 일은 없다
  2. B유효 기간이 지난 토큰이라도 서명이 올바르면 변조되지 않은 것이므로, 서버는 받아들여야 한다
  3. C헤더, 페이로드, 서명을 Base64URL로 인코딩하여 '.'으로 연결한 것으로, 서명으로 변조를 검출할 수 있지만 내용은 암호화되어 있지 않다
정답과 해설 보기

정답: C. 헤더, 페이로드, 서명을 Base64URL로 인코딩하여 '.'으로 연결한 것으로, 서명으로 변조를 검출할 수 있지만 내용은 암호화되어 있지 않다

JWT는 '헤더.페이로드.서명'의 세 부분으로 이루어지며, 헤더에는 서명 방식(예를 들어 HS256), 페이로드에는 이용자의 식별자나 유효 기간(exp) 등의 정보(클레임)가 들어갑니다. 서명은 헤더와 페이로드로부터 비밀 키를 사용하여 만들므로, 받은 서버는 내용이 변조되지 않았다는 것과 발행자를 확인할 수 있습니다. 다만 Base64URL은 암호가 아니며 누구나 원래대로 되돌려 읽을 수 있으므로, 비밀 정보는 넣지 않습니다. API로 보낼 때는 일반적으로 Authorization: Bearer 뒤에 토큰을 붙여 보냅니다.

이 분야 연습하기 분야로 돌아가기

웹 기술 기초의 다른 문제

  1. 사진 인화 서비스 앱이 이용자의 허락을 받아, 다른 회사의 사진 보관 서비스에 있는 이용자의 사진을 읽어 온다. OAuth 2.0에서 이용자에게 허락을 구하는 화면을 보여 주고, 이용자가 허락하면 앱에 액세스 토큰을 발급하는 역할은?
  2. OAuth 2.0과 OpenID Connect의 관계에 대한 설명으로 올바른 것은?
  3. REST의 사고방식에 따른 웹 API 설계로 적절한 것은?
  4. 브라우저에서 https://www.example.com:8443/docs/guide.html?lang=ja#install을 열었다. 이 URL 중 서버로 보내는 요청에는 포함되지 않고, 페이지를 읽어 들인 후 브라우저 안에서만 사용되는 부분은?
  5. URL의 쿼리에 일본어 문자 'あ'를 넣기 위해, 이 문자를 UTF-8로 나타낸 바이트열(E3 81 82)을 퍼센트 인코딩으로 나타낸다. 결과로 올바른 것은?