2012-05-18 10 views
8

Các câu hỏi dành cho câu hỏi mới bắt đầu.Xác thực, xác thực người dùng và Django-ngonpie

Tôi hơi bối rối về cách tiếp cận chung để sử dụng các dịch vụ RESTful cùng với người dùng khác biệt. Đặc biệt, tôi chủ yếu quan tâm đến việc phát triển API mà chỉ tôi sẽ sử dụng thông qua các ứng dụng khác nhau mà tôi viết, cụ thể là ứng dụng web và một số ứng dụng dành cho thiết bị di động sẽ truy cập cùng một dữ liệu.

(1) API còn lại được sản xuất bởi một cái gì đó như django-ngon thích hợp (hoặc thậm chí thực hành tốt nhất) để sử dụng không công khai - tức là khi tôi chỉ muốn cấp quyền truy cập vào dữ liệu này thông qua các ứng dụng của tôi?

(2) Khi tạo quyền truy cập đăng nhập vào API Restful, tôi có đang tạo thông tin đăng nhập cho tất cả người dùng ứng dụng web của mình hay không hoặc đang tạo đăng nhập cho bản thân mình và ứng dụng web của tôi? Tài khoản người dùng cho webapp của tôi có được coi là khác biệt với các tài khoản để truy cập API Restful không?

Về cơ bản, tôi muốn tạo một ứng dụng bằng Django và django-tastypie cho phép người dùng đăng nhập, tạo các đối tượng xem &, đăng ký người dùng và xem đối tượng của họ. Tôi muốn sử dụng API Tastypie cho mục đích javascript của riêng tôi, để dễ dàng với việc tạo ra tuần tự hóa và cập nhật dữ liệu có liên quan trong quan điểm của tôi. Các tài khoản người dùng này nằm trong ảnh này ở đâu? Cảm ơn!

+0

Điểm số 2 của bạn không rõ ràng đối với tôi.Bạn không thể có các ứng dụng của bạn như là người dùng của bạn api (mà một lần nữa là một dự án django trong chính nó, tôi đoán)? – zubinmehta

Trả lời

4

Nếu tôi hiểu chính xác, bạn đang xử lý hai mối quan tâm xác thực riêng biệt tại đây: (A) Truy cập API - Ứng dụng web/di động của bạn chỉ (B) Truy cập dữ liệu người dùng qua API - Dành cho người dùng qua web/ứng dụng di động

Đối với (A), bạn chỉ có thể xác thực trên khóa bí mật. Vì vậy, giao diện người dùng web hoặc thiết bị di động của bạn sẽ gửi khóa đó với mọi yêu cầu API, điều này sẽ đảm bảo rằng bạn chỉ nhận được yêu cầu từ khách hàng mà bạn cho phép.

Nếu bạn muốn sử dụng các phím khác nhau cho các ứng dụng khác nhau, bạn có thể tạo mô hình django đơn giản để theo dõi chúng và thêm các phím mới hoặc thu hồi chúng khi cần thiết.

Nếu bạn sử dụng SSL cho mọi thứ, bạn nên an toàn khi đánh hơi các cuộc tấn công để khám phá khóa của mình. Tôi nghĩ điểm yếu nhất ở đây là ai đó có thể đảo ngược kỹ sư ứng dụng di động của bạn để tìm khóa, vì bạn sẽ phải lưu trữ khóa trong ứng dụng.

Đối với (B), hãy sử dụng hệ thống xác thực django. The tastypie Basic hoặc ApiKey Authenticators sẽ cho phép bạn đăng nhập người dùng trong và thông qua API và dựa trên quyền của họ, truy cập hoặc tạo dữ liệu. Tôi nghĩ đó là những gì bạn đã hỏi trong câu hỏi thứ hai?

Tôi không nghĩ rằng bạn có thể sử dụng cùng một mô hình xác thực cho cả (A) và (B) nếu bạn đang sử dụng phiên vì bạn không thể có hai phiên hoạt động cùng một lúc.

+0

Cảm ơn câu trả lời. Tôi đã di chuyển một chút, nhưng vẫn còn bối rối bởi các nguyên tắc cơ bản. – bento

+0

@sid sự khác biệt ở đây giữa Xác thực ApiKey và xác thực khóa bí mật mà bạn đã mô tả trong (A) là gì? –

0

Tôi mới với DjangoDRF và tôi có thể sử dụng một số help.I vừa tạo một ứng dụng Note và tôi đang xem xét nếu i am gonna cần một người sử dụng/tác giả/khách hàng ứng dụng thứ hai trong dự án của tôi. Tôi chỉ muốn người dùng có thể đăng nhập, tạo ghi chú của riêng họ và ghi chú phải có một (hoặc nhiều) tác giả để tôi có thể lọc userdata.Bất kỳ trợ giúp nào?

PS: Tôi cũng là người mới bắt đầu để chúng tôi có thể giữ liên lạc nếu bạn muốn.