2013-10-21 29 views
8

Hãy xem xét kịch bản (phổ biến) sau đây. Trước tiên, tôi sẽ cố gắng xác định cách tôi hiểu Web API (tốt) sẽ trông như thế nào, sử dụng OAuth. Xin vui lòng làm chính xác cho tôi nếu tôi có bất kỳ dòng chảy sai.Xác thực và ủy quyền API Web (OAuth)

API của tôi: trung tâm của sự chú ý, tất cả khách hàng đều sử dụng điều này.

Ứng dụng web của tôi: Sử dụng API giống như bất kỳ ứng dụng khách nào khác.

Ứng dụng di động của tôi: Cũng sử dụng API, giống như cách chính xác như ứng dụng web. Người dùng có thể xác thực mà không cần mở trình duyệt.

Ứng dụng web của bên thứ ba: Cũng sử dụng API - tuy nhiên, chủ sở hữu người dùng/tài nguyên phải cấp quyền cho ứng dụng để làm điều gì đó. Họ làm điều này bằng cách chuyển hướng đến trang web của tôi (hoặc mở một cửa sổ bật lên cho nó), đăng nhập người dùng nếu cần và nhắc người dùng truy cập.

Ứng dụng di động của bên thứ ba: Các yêu cầu tương tự như ứng dụng web của bên thứ ba.


Các Câu hỏi (s)

  • nên API xử lý xác thực và ủy quyền?
  • Làm cách nào để API biết ai (chủ sở hữu tài nguyên đang sử dụng ứng dụng khách) đang sử dụng API?
  • Khi người dùng đang sử dụng khách hàng chính thức của tôi, họ rõ ràng không phải cấp bất kỳ quyền nào - khách hàng của tôi phải có tất cả các quyền. Làm cách nào để phân biệt giữa khách hàng chính thức của tôi và khách hàng của bên thứ ba khi gọi API?

Dưới đây là những gì tôi hiểu và sẽ thực hiện cho đến thời điểm này. Đây là nơi tôi thực sự cần sự giúp đỡ - việc này được thực hiện đúng.

ứng dụng Web chính thức

- Client attempts to `GET /api/tasks/". 
- API says "who are you? (HTTP 401) 
- Official web app redirects to login form. 
> Bob enters his credentials. 
- .. now what? Get an authentication token? Cookie? 
  • Kể từ khi ứng dụng web chỉ là một người tiêu dùng API của tôi, làm sao tôi có thể quản lý việc đăng nhập trạng thái? Ứng dụng web có nên thực hiện điều đó không?
  • Ứng dụng web có thể truy cập trực tiếp vào cơ sở dữ liệu người dùng thay vì xác minh bằng chứng xác thực đối với API không?

Tôi đang sử dụng .NET (C#) chủ yếu, nhưng tôi cũng thích cách tiếp cận áp dụng cho API dựa trên Node JS.

Bạn sẽ giải quyết vấn đề này bằng cách nào? Đặc biệt là dòng khách hàng là một vấn đề đối với tôi. Lý do tôi hỏi, là tôi đã đọc rằng bạn không nên cuộn giải pháp bảo mật của riêng bạn trừ khi hoàn toàn cần thiết, vì vậy nếu có bất kỳ hướng dẫn tiêu chuẩn-ish cho việc này, hãy cho tôi biết. :)

+0

Bạn có tìm thấy giải pháp cho vấn đề của mình không vì tôi đang tìm kiếm cao và thấp cho một và không có gì cho đến nay. – idipous

+0

Không, thật đáng buồn là không .. – Jeff

+0

oauthbible.com có ​​thể giúp bạn? –

Trả lời

3

Hãy xem xét công cụ API web 2 oAuth mới.

Về cơ bản kích hoạt một dự án API web mới và đảm bảo bạn chọn thay đổi xác thực.

Sau đó, đó là trường hợp đơn giản gọi bộ điều khiển đăng ký. Điều này sau đó tạo ra một mã thông báo cho bạn mà sau đó có thể được gửi trong tiêu đề của mỗi yêu cầu cho người dùng đó.

Kiểm tra các cuộc gọi API bằng cách sử dụng trình kích hoạt và tạo một số tài khoản giả lập.

+0

Tôi sẽ kiểm tra! Cảm ơn! – Jeff

0

Đã lâu rồi, nhưng tôi nghĩ tôi sẽ ghi lại những gì tôi đã làm.

Tôi sử dụng DotNetOpenAuth. Tôi có một cơ sở dữ liệu với khách hàng, và họ có một lĩnh vực Trusted - nếu điều này được thiết lập, nó cho phép khách hàng sử dụng cấp mật khẩu, tự động cấp tất cả phạm vi đã được xác định trước cho khách hàng đó.

Ứng dụng web của bên thứ nhất sử dụng xác thực cookie đơn giản - hiển thị thông tin đăng nhập ứng dụng khách trong JS sẽ quá nguy hiểm.

Các vấn đề liên quan