28

Tôi đã mã hóa một dịch vụ RESTful trong Java. Đây là những gì tôi đã hiểu cho đến bây giờ (sửa tôi nếu tôi sai):Sự khác biệt giữa Chữ ký Web JSON (JWS) và Mã thông báo Web JSON (JWT) là gì?

Ủy quyền thẻ được thực hiện bằng cách sử dụng Thẻ Web JSON (JWT) có ba phần: tiêu đề, tải trọng và bí mật (được chia sẻ giữa máy khách và máy chủ).

Tôi hiểu khái niệm này và tình cờ gặp Chữ ký web JSON (JWS) trong khi đọc về JWT.

JWS cũng là một thực thể được mã hóa tương tự như JWT có tiêu đề, trọng tải và bí mật được chia sẻ.

Câu hỏi: Sự khác nhau giữa hai khái niệm, cụ thể là JWT và JWS là gì? Và nếu chúng giống nhau về mặt kỹ thuật, thì sự khác biệt trong việc triển khai của chúng là gì?

Đây là lần đầu tiên tôi làm việc với xác thực dựa trên mã thông báo, vì vậy có thể tôi đã hiểu nhầm khái niệm hoàn toàn.

P.S. Tôi đã tìm hiểu về JWS trong khi duyệt qua các ví dụ trên this website.

Trả lời

27

JWT thực sử dụng JWS cho chữ ký của mình, từ spec:

JSON Web Mã (JWT) là một phương tiện URL an toàn nhỏ gọn của đại diện tuyên bố được chuyển giao giữa hai bên. Các xác nhận quyền sở hữu trong JWT là được mã hóa dưới dạng đối tượng JavaScript Object Notation (JSON) được sử dụng như tải trọng của cấu trúc Chữ ký Web JSON (JWS) hoặc là văn bản thuần túy của cấu trúc mã hóa Web JSON (JWE), cho phép tuyên bố được ký điện tử hoặc MAC và/hoặc được mã hóa.

Vì vậy, JWT là cấu trúc JWS có đối tượng JSON làm trọng tải. Một số khóa tùy chọn (hoặc xác nhận quyền sở hữu) đã được xác định như iss, aud, exp v.v.

Điều này cũng có nghĩa là bảo vệ toàn vẹn không chỉ giới hạn trong bí mật dùng chung.

+0

Được rồi. Vậy thông tin người dùng của tôi sẽ đi đâu, nếu tải trọng chứa tập hợp xác nhận quyền sở hữu? Bạn có thể chỉ cho tôi một ví dụ? – leo

+0

hãy xem các ví dụ trong Phụ lục A trong thông số tại đây: https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32 –

+0

Các xác nhận quyền sở hữu sẽ có thông tin người dùng. Dưới đây là một ví dụ trong mã với các ý kiến ​​nói về những gì đang xảy ra https://bitbucket.org/b_c/jose4j/wiki/JWT%20Examples –

Các vấn đề liên quan