28

Java에서 RESTful 서비스를 코딩했습니다. 이것은 내가 지금까지 이해 한 것입니다 (내가 틀렸다면 수정하십시오) :JSON 웹 서명 (JWS)과 JSON 웹 토큰 (JWT)의 차이점은 무엇입니까?

토큰 권한 부여는 JSON 웹 토큰 (JWT)을 사용하여 수행됩니다. 헤더, 페이로드 및 비밀 (클라이언트와 서버간에 공유 됨).

이 개념을 이해하고 JWT에 대해 읽는 동안 JSON 웹 서명 (JWS)을 우연히 발견했습니다.

JWS는 헤더, 페이로드 및 공유 암호가있는 JWT와 유사한 인코딩 된 엔터티입니다.

질문 : 두 개념, 즉 JWT와 JWS의 차이점은 무엇입니까? 기술적으로 비슷하다면 구현의 차이는 무엇입니까?

토큰 기반 인증을 사용하여 작업하는 것은 이번이 처음이므로이 개념을 완전히 오해 한 것일 수 있습니다.

P. this website의 예제를 탐색하면서 JWS에 대해 배웠습니다.

답변

27

JWT 실제로 은 사양에서 그 서명을 JWS를 사용

JSON 웹 토큰 (JWT)이 두 당사자 사이에 전송할 수 주장을 표현하는 소형, URL 안전한 방법입니다. JWT의 클레임은 으로, JSON 웹 서명 (JWS) 구조의 페이로드 또는 JSON 웹 암호화 (JWE) 구조의 일반 텍스트로 사용되는 으로 사용되는 JSON (JavaScript Object Notation) 개체로 인코딩됩니다. 디지털 서명 또는 MAC 암호화 및/또는 암호화를 주장합니다.

따라서 JWT는 페이로드로 JSON 개체가있는 JWS 구조입니다. 일부 옵션 키 (또는 주장은) 다음과 같은 iss, aud, exp

이 또한 무결성 보호 그냥 공유 비밀하지만 공개/개인 키 암호화도 사용할 수에 제한되지 않음을 의미합니다 정의되어 있습니다.

+0

알겠습니다. 그렇다면 페이로드에 소유권 주장 집합이 포함되어있는 경우 내 사용자 정보는 어디로 이동합니까? 예를 보여줄 수 있습니까? – leo

+0

부록 A의 예를 아래의 스펙에서 살펴보십시오. https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32 –

+0

소유권 주장에는 사용자 정보가 있습니다. 다음은 https://bitbucket.org/b_c/jose4j/wiki/JWT%20Examples에서 무슨 일이 벌어지고 있는지에 대한 의견이있는 코드의 예입니다. –