2012-02-29 30 views
6

Tôi đang cố gắng thêm giao diện REST vào Django cho ứng dụng khách di động. Ứng dụng khách di động sẽ sử dụng JSON qua HTTPS. Tôi đã không thể tìm ra cách "tốt nhất" để thực hiện điều này cho các thiết bị di động. Từ tìm kiếm xung quanh, có vẻ như # 2 là thuận lợi hơn để # 1:Làm cách nào để bảo mật API REST cho ứng dụng dành cho thiết bị di động?

  1. Sử dụng xác thực HTTP và thiết lập phiên dựa trên cookie. Tất cả các giao dịch sẽ xảy ra qua các tin nhắn HTTP và JSON sẽ chỉ chứa các lệnh hoặc dữ liệu.
  2. Chuyển tên người dùng và mật khẩu (được mã hóa) trong mỗi thông báo JSON cho tất cả các giao dịch và không dựa vào các phiên dựa trên cookie.

Trả lời

1

Số 2 là thích hợp hơn và thay vì cuộn của riêng bạn, tôi khuyên bạn nên sử dụng xác thực OAuth nếu có thể. Cả hai thư viện máy khách và máy chủ đều có sẵn để sử dụng trên hầu hết các nền tảng hiện nay. Kiểm tra http://oauth.net để biết chi tiết.

+0

Bất kỳ liên kết nào để thiết kế tài liệu/mẫu về chủ đề này? – QED

+0

Tôi chắc chắn sẽ bắt đầu với phần "Bắt đầu" của trang web Oath.net đã đề cập ở trên. Nó có liên kết đến phần lớn thông tin OAuth hiện có. –

+0

Rất tiếc, ý tôi là REST – QED

3

OAuth là quá mức cần thiết trừ khi bạn muốn cung cấp các dịch vụ này cho các nhà phát triển khác (mà họ sẽ truy cập thay mặt cho người dùng cuối của bạn). Tốt hơn để đi với tùy chọn 2, nhưng tôi khuyên bạn nên sử dụng xác thực Digest như trái ngược với xác thực mật khẩu. Kết hợp với SSL và bạn chắc chắn là tốt để đi.

0

Miễn là bạn đang sử dụng mã hóa thực tế chứ không phải base64 hoặc một số thuật toán obfuscation tự phát triển, # 2 là tốt và dandy. Bạn cũng có thể muốn xem xét lộ trình mà nhiều công ty thực hiện, đó là ràng buộc khóa API với tên người dùng.

+0

Mã hóa vẫn cần thiết nếu mọi thứ sẽ được gửi bằng SSL? – ewhitt

+0

SSL là mã hóa. Nó chỉ là mã hóa ở một lớp khác của ngăn xếp giao tiếp - SSL mã hóa toàn bộ kênh giao tiếp thay vì chỉ nội dung được chọn của một thông điệp cụ thể. Do đó, nó thường đắt hơn. Để làm cả hai có thể là một sự lãng phí tài nguyên. – QED

8

Tôi khuyên bạn nên gửi tên người dùng/mật khẩu trước bằng cuộc gọi đăng nhập. JSON sẽ trả lại một authToken hoặc accessToken mà thiết bị di động sẽ gửi lại cho tất cả các cuộc gọi tiếp theo. Sau đó, bạn sẽ kiểm tra để đảm bảo authToken hợp lệ. Đây là cách tiếp cận của nhiều API. Trong cơ sở dữ liệu của họ, họ sẽ liên kết khóa API với tài khoản người dùng mà họ đã đăng nhập.

+0

Cảm ơn. Tôi thích cách tiếp cận này. Loại cắt cụt này có tên hay thứ gì đó mà tôi có thể làm cho Google thêm cơ hội? – ewhitt

+0

@ewhitt được coi là xác thực dựa trên mã thông báo http://upcoming.yahoo.com/services/api/token_auth.php – Bot

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