Câu hỏi là một câu hỏi phổ biến, nhưng nó không hoàn toàn hợp lý. JWT là một loại Mã thông báo và OAuth là Khung mô tả cách phân phối mã thông báo.
"Khung" nghĩa là gì? Chỉ là chuỗi các yêu cầu và phản hồi, và các định dạng của những yêu cầu đó, có thể và nên được sử dụng để yêu cầu mã thông báo. OAuthv2 mô tả các "luồng" riêng biệt hoặc các loại cấp cho các kịch bản khác nhau và có các phần mở rộng khác nhau (như PKCE) để mở rộng bảo mật của các luồng cụ thể.
Kết quả của yêu cầu mã thông báo thông qua trợ cấp OAuthV2 là ... mã thông báo. Điều đó sau đó được sử dụng như một "mã thông báo mang", có nghĩa là, bất kỳ bên nào nắm giữ mã thông báo, có thể xuất trình nó khi thực hiện yêu cầu dịch vụ api (ví dụ: "số dư trên thẻ giá trị được lưu trữ của tôi là gì?"). Là một mã thông báo Bearer, nó hoạt động như tiền mặt. Nếu bạn đang giữ nó, bạn có thể sử dụng nó. (Mặc dù không giống như tiền mặt, mã thông báo không sử dụng và mất nó. Có lẽ một sự tương tự tốt hơn là vé đi cả ngày trên hệ thống giao thông công cộng hoặc vé cả ngày tại Disneyworld.)
JWT là một loại mã thông báo cụ thể và JWT hoàn toàn có thể được sử dụng làm mã thông báo OAuth Bearer. Trong thực tế, đây là thực tế phổ biến nhất. Xét về điều đó, "JWT vs OAuth" là sự so sánh giữa táo và xe táo.
Thông thường mọi người nghĩ rằng "mã thông báo OAuth" luôn ngụ ý mã thông báo mờ - một chuỗi ký tự chữ và số không có ý nghĩa vốn có - được cấp bởi một bộ phân phát mã thông báo OAuth, sau đó chỉ có thể được xác nhận bởi hệ thống phân phối OAuth đó. Nhưng đây không phải là loại mã thông báo OAuth duy nhất. Mã thông báo mờ là một loại mã thông báo; JWT có thể được sử dụng như một loại mã thông báo OAuth khác.
Ngược lại, JWT không mờ đục. JWT không phải là "con trỏ" hoặc tham chiếu thông tin. Nó thực sự chứa nhiều thông tin cụ thể, có thể được trích xuất và giải thích bởi bất kỳ bên nào có mã thông báo. Vì JWT chứa thông tin thực, JWT có thể lớn; 300 byte, 500 byte hoặc nhiều hơn, tùy thuộc vào các khiếu nại có trong nó và thuật toán được sử dụng để ký tên. Khi mọi người nói "JWT đang tự xác thực" ý nghĩa của chúng là gì, bất kỳ chủ sở hữu nào của JWT đều có thể mở nó, xác thực nó và sau đó đưa ra quyết định ủy quyền dựa trên các khiếu nại được trình bày trong đó. Xác thực JWT có nghĩa là: xác minh cấu trúc của nó, giải mã mã hóa base64, xác minh khóa là chính xác, xác minh chữ ký, sau đó xác minh các yêu cầu bắt buộc có trong mã thông báo, kiểm tra hết hạn. Đó không phải là một điều đơn giản, thay vì một quá trình gồm nhiều bước, nhưng tất nhiên có rất nhiều thư viện bằng nhiều ngôn ngữ lập trình khác nhau, và tất nhiên có chính sách ConfirmJWT giúp bạn thực hiện điều này trong proxy API Apigee Edge. Vấn đề là, bất kỳ chủ sở hữu hoặc người nhận có thể xác minh mã thông báo. Vì điều này, chúng tôi nói rằng JWT hỗ trợ "Liên kết" - bất kỳ ai cũng có thể tạo mã thông báo và bất kỳ ai cũng có thể đọc và xác thực mã thông báo.
yêu cầu tùy chỉnh. Cả JWT và mã thông báo OAuth mờ đục đều có thể mang các khiếu nại tùy chỉnh về chủ đề này. Bảo vệ. Cả hai đều là mã thông báo mang. Cả hai cần được bảo vệ như bí mật. hết hạn Cả hai có thể được đánh dấu với một hết hạn. Cả hai có thể được làm mới. Các cơ chế xác thực hoặc kinh nghiệm. Cả hai có thể trình bày cùng một trải nghiệm người dùng.