Hai là khái niệm thứ khác nhau:
- "Mã truy cập Xác thực" chỉ định một giao thức mô tả làm thế nào một (có thể tồn tại lâu dài) token nên trình bày cho các máy chủ một cách an toàn. Nó không nói gì về mã thông báo đến từ đâu hoặc nó nên được giải thích như thế nào.
- "Cấp chứng chỉ mật khẩu" là một phần của luồng OAuth chính thức, mô tả phương tiện nhận mã thông báo (thường ngắn ngủi).
Trong ý nghĩa, bạn có thể sử dụng Cấp chứng chỉ mật khẩu để nhận mã thông báo bằng OAuth và sau đó sử dụng mã thông báo này trong tiêu đề ủy quyền Token
để truy cập. Câu hỏi sau đó trở thành - là hữu ích khi thực hiện thêm vòng tròn để trao đổi thông tin (vĩnh viễn và bí mật) cho mã thông báo (tạm thời), khi chúng tôi có thể sử dụng mã thông báo (vĩnh viễn và bí mật) được lưu trữ trong ứng dụng để cho phép ngay lập tức.
Như tôi thấy, có hai lợi ích tiềm năng của việc sử dụng luồng OAuth đầy đủ. Thứ nhất, nó cho phép bạn thêm các phương thức ủy quyền khác cho bên thứ ba một cách tự nhiên. Thứ hai, nó cho phép bạn thu hồi mã thông báo tại bất kỳ thời điểm nào và buộc ủy quyền lại bằng các phương tiện khác này (nếu bạn thực hiện chúng, tất nhiên) mà không phải phát minh ra bất kỳ bánh xe nào.
Mặt khác, bạn luôn có thể thêm bất kỳ phần "tạo mã thông báo" bổ sung nào sau này, khi cần. Do đó, nếu kế hoạch hiện tại của bạn là thông tin đăng nhập mã cứng trong mã anyway, tôi nghi ngờ bạn có thể tốt hơn không phụ thuộc vào ủy quyền Token
.
Đây không chỉ là một yêu cầu ngắn hơn, nó cũng có thể hơi an toàn hơn so với xác thực Bearer
sử dụng trong OAuth: nếu một kẻ tấn công ngửi một mã thông báo Bearer
, họ sẽ (thường) nhận được đầy đủ access token đến máy chủ cho đến khi hết hạn . Nó không phải là trường hợp với Token
mã thông báo (thông thường). Không phải tất cả vấn đề quá nhiều nếu kẻ tấn công có thể trích xuất bí mật được chia sẻ từ ứng dụng của bạn.
Nguồn
2017-04-14 16:16:21
Đây cũng là những gì tôi nghĩ. Bạn có thể có bất kỳ nguồn nào giải thích không có sự khác biệt hữu ích giữa Xác thực mã thông báo HTTP và Cấp chứng chỉ mật khẩu OAuth 2.0 không? – hattenn
Trên thực tế, bạn có thể nghĩ về 'Mã thông báo HTTP 'theo cách sam là kết hợp của' Tên người dùng: Mật khẩu' ... trong cả hai trường hợp, khách hàng phải lưu giữ chúng giữa các yêu cầu và gửi chúng lên mỗi yêu cầu. Bởi vì họ không hết hạn, bạn sẽ không bao giờ biết nếu ai đó đã đánh cắp nó và sử dụng nó trên đường đi. Mặt khác, điều này có thể dễ dàng được phát hiện với Cấp phép mã ủy quyền, được coi là an toàn hơn nhiều so với bất kỳ phiên bản nào trước đó. Có lẽ bạn tìm thấy một cái gì đó thú vị ở đây: http://softwareengineering.stackexchange.com/a/297997/238916 –
Tôi hiểu rằng, nhưng tôi không nói về Grant Author Grant, tôi chỉ nói về Credentials Grant vs Token Password Xác thực truy cập. – hattenn