Tôi có một sản phẩm có API REST đơn giản để người dùng sản phẩm có thể tích hợp trực tiếp với các tính năng của sản phẩm mà không cần sử dụng giao diện người dùng web của tôi.
Gần đây, tôi đã nhận được sự quan tâm từ các bên thứ ba khác nhau về việc tích hợp các máy khách để bàn của họ với API để cho phép người dùng sản phẩm của tôi truy cập dữ liệu của họ bằng ứng dụng của bên thứ ba đó.
Tôi đã thấy rằng các ứng dụng muốn sử dụng Twitter xác thực bằng cách sử dụng trang đăng nhập được lưu trữ bởi Twitter cấp quyền cho ứng dụng cụ thể để truy cập dữ liệu của người dùng đó. Bạn nhấp vào nút "Cho phép" hoặc "Từ chối" và quá trình xác thực hoàn tất. Facebook sử dụng cơ chế tương tự như tốt nhất tôi có thể nói.
Sau khi nghiên cứu sâu hơn, đây dường như là OAuth đang hoạt động và khi thấy API của tôi dựa trên .Net, tôi nghĩ rằng tôi nên sử dụng DotNetOpenAuth và cung cấp một cơ chế tương tự. Thật không may, các mẫu được ghi lại một cách thưa thớt (nếu có) và các hướng dẫn duy nhất tôi có thể tìm thấy trực tuyến dường như tập trung vào việc giúp bạn cung cấp cơ chế đăng nhập cho người dùng để họ có thể đăng nhập vào trang web của bạn bằng nhà cung cấp bên thứ ba.
Điều tôi thực sự muốn làm là để API REST của tôi xử lý tất cả các xác thực cốt lõi và logic nghiệp vụ cho ứng dụng web của tôi và về cơ bản, ứng dụng web của tôi về cơ bản là một ứng dụng khác chỉ sử dụng API thông qua OAuth. Người dùng sẽ xác thực trực tiếp trên trang web bằng tên người dùng và mật khẩu của họ hoặc thông qua nhà cung cấp bên thứ ba như MyOpenID hoặc Facebook và sau đó trang web sẽ sử dụng mã thông báo được trả lại để xác thực với API REST.
Về cơ bản, có vẻ như tôi cần API của mình để lưu trữ dịch vụ OAuth bằng cách nào đó, nhưng cũng có người dùng sử dụng dịch vụ OAuth của bên thứ ba. Tôi không thể không nghĩ rằng tôi không đủ hiểu biết về OAuth để quyết định xem liệu tôi có đang làm quá nhiều việc hay không, nếu những gì tôi đang cố gắng làm là một cách tốt hay xấu để làm mọi thứ.
Ai đó có thể cho tôi ít nhất một cái nhìn tổng quan về các bước tôi cần phải thực hiện, hoặc những gì tôi nên xem xét để thực hiện điều này? Hoặc chỉ cho tôi một số hướng dẫn? Hoặc nổ tung đề xuất của tôi và nói với tôi rằng tôi đang đi về điều này (về mặt kiến trúc) tất cả đều sai?