Tôi không biết nếu tôi chỉ có một số điểm mù hay gì đó, nhưng tôi đã đọc thông số kỹ thuật OAuth 2 nhiều lần và đọc các tài liệu lưu trữ danh sách gửi thư, và tôi vẫn chưa tìm thấy một lời giải thích tốt về lý do tại sao Tài trợ ngầm lưu lượng để lấy mã thông báo truy cập đã được phát triển. So với Cấp phép mã ủy quyền, dường như chỉ từ bỏ xác thực ứng dụng khách mà không có lý do rất thuyết phục. Làm thế nào điều này được "tối ưu hóa cho các máy khách được triển khai trong trình duyệt sử dụng ngôn ngữ kịch bản" (để trích dẫn đặc tả)?
Cả hai luồng bắt đầu giống nhau (nguồn: http://tools.ietf.org/html/draft-ietf-oauth-v2-22 ):
- Máy khách khởi tạo luồng bằng cách hướng tác nhân người dùng của tài nguyên đến điểm cuối ủy quyền.
- Máy chủ ủy quyền xác thực chủ sở hữu tài nguyên (thông qua tác nhân người dùng) và thiết lập xem chủ sở hữu tài nguyên có cấp hoặc từ chối yêu cầu truy cập của khách hàng hay không.
- Giả sử chủ sở hữu tài nguyên cấp quyền truy cập, máy chủ ủy quyền sẽ chuyển hướng tác nhân người dùng trở lại máy khách bằng cách sử dụng URI chuyển hướng được cung cấp trước đó (trong yêu cầu hoặc trong quá trình đăng ký máy khách).
- URI chuyển hướng bao gồm mã ủy quyền (luồng mã ủy quyền)
- URI chuyển hướng bao gồm mã thông báo truy cập trong đoạn URI (Luồng ngầm định)
Đây là nơi dòng chảy phân chia. Trong cả hai trường hợp, URI chuyển hướng tại thời điểm này là một số điểm cuối được lưu trữ bởi máy khách:
- Trong luồng mã ủy quyền, khi tác nhân người dùng chạm vào điểm cuối đó bằng mã ủy quyền trong URI, mã tại điểm cuối đó trao đổi mã ủy quyền cùng với thông tin xác thực ứng dụng khách của nó để lấy mã thông báo truy cập mà sau đó có thể sử dụng khi cần. Nó có thể, ví dụ, viết nó vào một trang web mà một tập lệnh trên trang có thể truy cập.
- Luồng tiềm ẩn bỏ qua bước xác thực ứng dụng khách này hoàn toàn và chỉ tải lên một trang web với tập lệnh máy khách. Có một mẹo dễ thương ở đây với đoạn URL giữ cho mã thông báo truy cập không bị chuyển qua quá nhiều, nhưng kết quả cuối cùng về cơ bản là giống nhau: trang web được lưu trữ trên máy khách phục vụ một trang có một số tập lệnh có thể lấy mã thông báo truy cập .
Do đó câu hỏi của tôi: những gì đã đạt được ở đây bằng cách bỏ qua bước xác thực ứng dụng khách?