JSON 웹 토큰-페이로드가 공개되는 이유는 무엇입니까?


30

JWT의 클레임 / 페이로드를 base64 디코딩 후 공개적으로 표시하는 이유를 이해할 수 없습니다.

왜?

비밀로 암호화하는 것이 훨씬 더 유용한 것 같습니다.

누군가가이 데이터를 공개하는 것이 왜 또는 어떤 상황에서 유용한 지 설명 할 수 있습니까?


JWT를 작성할 때 아마도 JWS를 의미 할 것입니다. JWE (JWT의 "서브 클래스"이기도 함)는 실제로 해당 컨텐츠를 암호화합니다.
Alexey

답변:


28

다른 어떤 것도 암호화하지 않기로 선택한 것과 같은 이유로 페이로드를 암호화하지 않기로 선택합니다. 비용 (소액은 적음)이 이점을 초과하며 많은 데이터를 그렇게 확보 할 필요가 없습니다.

당신이 주로 보호해야 할 것은 잘못된 기록이 업데이트되도록 누군가가 데이터를 변조하거나 누군가의 당좌 계좌가 가지고 있지 않은 돈을 얻는 것입니다. JSON 웹 토큰의 서명은 헤더 / 페이로드 / 서명 조합의 일부를 변경하면 패킷이 무효화되므로이를 수행합니다.

SSL을 사용하여 전송 계층에서 패킷을 계속 보호 할 수 있습니다.


아, 본질적으로 JWT는 새로운 CSRF 토큰입니다. 설명해 주셔서 감사합니다. 혼란이 사라졌습니다.
ineedhelp

6
JWT는 새로운 CSRF 토큰이 아닙니다. 그것들은 2 가지입니다.
Ash

@ash 조작의 세부 사항이 JWT에 저장되고 서버에서 유효성 검증되는 경우 JWT가 해당 시나리오에서 CSRF 예방의 역할을 본질적으로 수행하지 않습니까? 바닐라 JWT의 주요 목적은 인증이라는 것을 이해합니다.이 답변에서 매우 분명합니다. 더 많은 데이터를 추가하고 한 번에 두 가지 작업을 수행한다고 상상했습니다.
ineedhelp

@RobertHarvey, JWT를 잘못 사용하고 있습니다. JST는 JWS 및 JWE의 "우산"용어입니다. JWS는 인증하고 JWE는 암호화합니다. 따라서 "JSON 웹 토큰의 목적은 인증하는 것"은 실제로 "JWS는 인증하는 것"이어야합니다.
Alexey

@Alexey : 수용에 대한 답변이 약간 변경되었습니다.
Robert Harvey

4

RFC에서 서명 이라는 용어를 사용하는 것은 비대칭 암호화 의 디지털 서명 과 유사합니다 . 비대칭 암호화에서 보낸 사람이 개인 키로 메시지를 암호화하면 메시지를 가진 사람은 누구나 보낸 사람의 공개 키로 해독 할 수 있습니다. 따라서 서명 이라는 용어의 목표 는 메시지를 비밀로 유지하는 것이 아니라 메시지의 무결성 / 보내는 사람을 확인하는 것입니다.

JWT의 경우, 전송 시스템은 메시지의 작성자이자 소비자입니다 (아래 다이어그램 참조). 목표는 사용자에게 전달 된 토큰이 변조되지 않았는지 확인하는 것입니다 (예 : 높은 권한이 부여 된 경우).

@Robert가 언급했듯이 JWT는 여전히 TLS로 암호화해야합니다.

아래 이미지가 제공되는 JWT 및 서명에 대한 좋은 설명이 있습니다. JSON 웹 토큰 (JWT)을 이해하는 5 가지 쉬운 단계

asdfasdf


2

Robert Harveys의 답변에 추가하려면 페이로드를 암호화하는 데 큰 단점이 있습니다. 즉, 서비스 수신자는 토큰 보유자가 인증되었는지 여부를 이해하기 위해 인증 서버 (암호화 키)와 비밀을 공유해야합니다. 또는 아닙니다. 반대로 누구나 인증 서버에서 공개 한 공개 키만 사용하여 JWT의 유효성을 검증 할 수 있습니다.

이는 클라이언트 응용 프로그램이 인증 서버에서 발급 한 ID 토큰의 유효성을 검사 할 수있게 해주는 개방형 연결 사양의 핵심 부분으로, 리소스 서버를보다 쉽게 ​​배포 할 수 있습니다 (비밀 암호화에 액세스하여 배포 할 필요가 없으므로) 키) 및 발급 된 JWT의 문제를 진단 할 때도 도움이됩니다.


비대칭 및 대칭 암호화 메커니즘을 비교하려는 경우 jwt는 RSA 암호화의 구현입니다.
TheAnimatrix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.