Ủy quyền OAuth so với Xác thực


87

Thuật ngữ OAuth đã làm phiền tôi một thời gian dài. Là Ủy quyền OAuth như một số người sẽ đề xuất hay là Xác thực?

Hãy sửa tôi nếu tôi sai nhưng tôi đã luôn đọc Ủy quyền là hành động cho phép ai đó truy cập vào tài nguyên nhưng OAuth dường như không có bất kỳ triển khai nào thực sự cho phép người dùng truy cập vào một tài nguyên nhất định. Tất cả các triển khai OAuth nói về là cung cấp cho người dùng mã thông báo (đã ký và đôi khi được mã hóa). Mã thông báo này sau đó được chuyển với mọi cuộc gọi đến điểm cuối dịch vụ back-end nơi nó được kiểm tra tính hợp lệ, một lần nữa không phải là mối quan tâm của OAuth.

Có phải Xác thực OAuth (mọi bài báo đều nói rằng không phải vậy) mà tôi cho rằng nó yêu cầu người dùng cung cấp thông tin xác thực để chứng minh rằng người dùng nên / không nên có quyền truy cập?

Vì vậy, có vẻ như OAuth không phải là Xác thực NOR Ủy quyền vì chúng phải được thực hiện bởi các quy trình khác. Vậy đó là cái quái gì? Nó có phải là một quá trình để giao tiếp một mã thông báo? Nó có phải là từ fluff mà thực sự không có nghĩa cụ thể?

Thật khó để đặt một câu hỏi về chủ đề này mà không nghe có vẻ bí ẩn và mê tín (ma và yêu tinh), vì vậy tôi hy vọng rằng trả lời câu hỏi này cũng sẽ không phải là một điều đơn giản. Bước vào rủi ro riêng của bạn.


Tôi cũng thấy những câu trả lời này hữu ích: security.stackexchange.com/questions/44611/…
antak

OAuth 2.0 là một giao thức bảo mật. Chi tiết: stackoverflow.com/a/54304326/3623172
Rajat

Câu trả lời:


150

OAuth là một đặc điểm kỹ thuật để ủy quyền

OAuth 2.0 là một đặc tả để ủy quyền, nhưng KHÔNG phải để xác thực. RFC 6749, 3.1. Điểm cuối cấp phép nói rõ ràng như sau:

Điểm cuối ủy quyền được sử dụng để tương tác với chủ sở hữu tài nguyên và nhận được khoản cấp phép. Máy chủ ủy quyền trước tiên PHẢI xác minh danh tính của chủ sở hữu tài nguyên. Cách mà máy chủ ủy quyền xác thực chủ sở hữu tài nguyên (ví dụ: tên người dùng và mật khẩu đăng nhập, cookie phiên) nằm ngoài phạm vi của đặc tả này .


Xác thực OAuth?

Xác thực giao dịch thông tin về "ai là". Ủy quyền giải quyết thông tin về "ai cấp quyền nào cho ai". Luồng ủy quyền chứa xác thực là bước đầu tiên của nó. Nó là lý do mà mọi người thường bị nhầm lẫn.

Có nhiều thư viện và dịch vụ sử dụng OAuth 2.0 để xác thực. Nó thường được gọi là "đăng nhập xã hội" và Nó khiến mọi người nhầm lẫn hơn. Nếu bạn thấy "Xác thực OAuth" (không phải "Ủy quyền OAuth") thì đó là giải pháp sử dụng OAuth để xác thực.


Kết nối OpenID

OpenID 1.0 và OpenID 2.0 là các thông số kỹ thuật cũ để xác thực. Những người đưa ra các thông số kỹ thuật mong muốn mọi người sử dụng OpenID để xác thực. Tuy nhiên, một số người đã bắt đầu sử dụng OAuth 2.0 để xác thực (không phải để ủy quyền) và xác thực OAuth đã nhanh chóng chiếm ưu thế.

Theo quan điểm của những người OpenID, xác thực dựa trên OAuth không đủ an toàn, nhưng họ phải thừa nhận rằng mọi người thích xác thực OAuth hơn. Do đó, các thành viên OpenID đã quyết định xác định một thông số kỹ thuật mới, OpenID Connect , trên OAuth 2.0.

Vâng, điều này đã khiến mọi người hoang mang hơn nhiều.


Định nghĩa một câu về OAuth 2.0 và OpenID Connect

OAuth 2.0 là một khuôn khổ trong đó người dùng dịch vụ có thể cho phép ứng dụng bên thứ ba truy cập vào dữ liệu của họ được lưu trữ trong dịch vụ mà không tiết lộ thông tin đăng nhập (ID và mật khẩu) của họ cho ứng dụng.

nhập mô tả hình ảnh ở đây

OpenID Connect là một khuôn khổ trên OAuth 2.0 trong đó ứng dụng của bên thứ ba có thể lấy thông tin nhận dạng của người dùng được một dịch vụ quản lý.

nhập mô tả hình ảnh ở đây

(Xin lỗi, những định nghĩa này là phần trích dẫn từ trang tổng quan của công ty tôi)


Định nghĩa từ quan điểm của người thực hiện

Xác thực là một quá trình để xác định chủ thể (= mã định danh duy nhất) của người dùng cuối. Có nhiều cách để xác định chủ thể. ID và mật khẩu, dấu vân tay, nhận dạng mống mắt, v.v.

Ủy quyền là một quá trình liên kết chủ thể với các quyền được yêu cầu và ứng dụng khách đã yêu cầu các quyền đó. Một mã thông báo truy cập đại diện cho hiệp hội.


Xem thêm

  1. Người triển khai Full-Scratch của OAuth và OpenID Connect nói về kết quả
  2. Sơ đồ và phim của tất cả các luồng OAuth 2.0
  3. Sơ đồ của tất cả các luồng kết nối OpenID
  4. Hướng dẫn đơn giản nhất cho OAuth 2.0

13
Đối với những người tự hỏi tại sao xác thực dựa trên OAuth không đủ an toàn , tôi cho rằng lý do chính là những cạm bẫy phổ biến này .
antak

4
"Luồng cấp quyền chứa xác thực là bước đầu tiên của nó. Đó là lý do khiến mọi người thường nhầm lẫn." Vàng.
Sully

1
Chà, sự khác biệt duy nhất tôi có thể thấy giữa hai sơ đồ là sơ đồ đầu tiên chứa "dữ liệu của người dùng" và sơ đồ thứ hai chứa "danh tính của người dùng", vì vậy điều này thật khó hiểu.
Joel_Blum
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.