Sự khác biệt giữa JWTs và Bearer Token là gì?


105

Tôi đang tìm hiểu một số điều về Ủy quyền như Basic, Digest, OAuth2.0, JWTs và Bearer Token.

Bây giờ tôi có một câu hỏi.

Bạn biết JWT đang được sử dụng như một Access_Token trong tiêu chuẩn OAuth2.0. JWT xuất hiện ở RFC 7519 và Bearer Token ở RFC 6750.

Ví dụ, Bearer:

Authorization: Bearer <token>

Tôi đã từng gửi mã thông báo đến máy chủ bằng AJAX hoặc thêm mã thông báo vào chuỗi truy vấn của url. Tôi biết rằng mã thông báo cũng có thể được gửi bằng cách thêm nó vào tiêu đề yêu cầu. Điều đó có nghĩa là mã thông báo đó phải được thêm vào tiêu đề Người ghi ủy quyền?

Bạn vui lòng cho tôi biết mối quan hệ giữa JWTs và Bearer Token? Cảm ơn rất nhiều.

Câu trả lời:


85

JWT là một tiêu chuẩn mã hóa cho các mã thông báo có chứa tải trọng dữ liệu JSON có thể được ký và mã hóa.

JWT có thể được sử dụng cho nhiều thứ, trong số đó là các token mang, tức là một phần thông tin mà bạn có thể trình bày cho một số dịch vụ mà nhờ bạn có nó (bạn là "người mang") cấp cho bạn quyền truy cập vào một thứ gì đó.

Các mã thông báo mang có thể được đưa vào một yêu cầu HTTP theo nhiều cách khác nhau, một trong số chúng (có thể là cách được ưu tiên) là tiêu đề Ủy quyền. Nhưng bạn cũng có thể đặt nó vào tham số yêu cầu, cookie hoặc nội dung yêu cầu. Đó chủ yếu là giữa bạn và máy chủ mà bạn đang cố gắng truy cập.


Sau đó, làm thế nào để phân tích mã thông báo trong tiêu đề Ủy quyền, có Bearer, tôi phải sử dụng String.slice (), có bất kỳ phần mềm trung gian nào để phân tích nó không?
laoqiren

Tôi đang sử dụng Node.js
laoqiren

Sử dụng các auth-headergói nếu bạn muốn có một phân tích cú pháp tối thiểu
Demurgos

1
Hoặc chỉ sử dụng String.slice () :)
Paul Siersma

138

Câu trả lời ngắn

JWT là một cách thuận tiện để mã hóaxác minh các xác nhận quyền sở hữu .

Mã thông báo Bearer chỉ là một chuỗi, có thể là tùy ý, được sử dụng để ủy quyền.

Bối cảnh (thời gian câu chuyện)

Một vài năm trước, trước cuộc cách mạng JWT, a <token>chỉ là một chuỗi không có ý nghĩa nội tại, ví dụ 2pWS6RQmdZpE0TQ93X. Mã thông báo đó sau đó đã được tra cứu trong cơ sở dữ liệu, nơi chứa các xác nhận quyền sở hữu cho mã thông báo đó. Nhược điểm của phương pháp này là cần có quyền truy cập DB (hoặc bộ nhớ đệm) mỗi khi mã thông báo được sử dụng.

JWT mã hóaxác minh (thông qua ký) các tuyên bố của riêng họ . Điều này cho phép mọi người phát hành các JWT tồn tại trong thời gian ngắn không trạng thái (đọc: độc lập, không phụ thuộc vào bất kỳ ai khác). Họ không cần phải đánh DB. Điều này làm giảm tải DB và đơn giản hóa kiến ​​trúc ứng dụng bởi vì chỉ có dịch vụ phát hành JWT mới cần phải lo lắng về việc đánh vào lớp DB / lớp bền bỉ (lớp refresh_tokencó thể bạn đã xem qua).


Cảm ơn, còn Mac trong Ủy quyền thì Mac và Bearer có giống nhau không?
laoqiren

Tốt nhất đã trả lời ở những nơi khác, ví dụ như: dzone.com/articles/oauth-20-bearer-token-profile
rmharrison

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.