2012-04-10 44 views
7

Tôi đang viết một máy chủ sử dụng ASP.NET Web Api template và thực hiện các dịch vụ còn lại. Máy chủ này sẽ là phụ trợ cho trò chơi dành cho thiết bị di động, nơi nó sẽ lưu trữ điểm cao, tiến trình và thông tin khác của người dùng. Tôi đã xem xét một số phương pháp (this, thisthis) và tôi đang gặp sự cố khi quyết định cách tiếp cận để sử dụng. Trong trường hợp của tôi, tôi muốn ngăn chặn gian lận điểm số chủ yếu vì mỗi tài khoản người dùng sẽ chứa thông tin giới hạn (bên ngoài email của họ). Đây là những gì lý tưởng sẽ xảy ra.Xác thực và ủy quyền bằng REST và ASP.NET Web Api từ các ứng dụng di động đa nền tảng

  1. tài khoản mở ứng dụng lần đầu tiên
  2. tài được đưa ra tùy chọn cho tên người dùng tùy chỉnh và điều này được kiểm tra bởi máy chủ do đó không được trùng lặp
  3. tài được đưa ra một số pin sáu chữ số được tạo ngẫu nhiên (để họ có thể sử dụng cùng một tài khoản trên điện thoại khác nhau)
  4. dùng nhập địa chỉ email
  5. người dùng mới được tạo ra trên máy chủ (máy chủ xác nhận rằng tài khoản đã được tạo ra bởi một trường hợp giá trị của ứng dụng khách hàng của tôi)
  6. Chơi trò chơi của người dùng, tải lên kết quả (Qua xác thực cơ bản?)
  7. Người dùng có thể xem kết quả toàn cầu (không bảo mật trên phương pháp GET mà không phải là người dùng cụ thể)

Tôi đang gặp rắc rối thu hẹp loại xác thực (không có màn hình đăng nhập trình duyệt và như vậy) và ủy quyền phương pháp để sử dụng. Mọi sự trợ giúp sẽ rất được trân trọng.

-Tamas

+0

Có lẽ sự xác nhận cơ bản có thể là đủ trong trường hợp này? Nhưng tôi vẫn không chắc chắn làm thế nào để đảm bảo rằng ai đó đang truy cập api còn lại thông qua một khách hàng hợp lệ. – tamaslnagy

Trả lời

5

Ngay cả khi bạn đang sử dụng xác thực cơ bản, bạn sẽ muốn sử dụng HTTPS. Nếu bạn đang sử dụng HTTPS thì bạn có thể sử dụng chứng chỉ ứng dụng khách để xác minh ứng dụng khách. Chỉ những khách hàng có chứng chỉ hợp lệ mới được cấp quyền truy cập. Nếu bạn không mở API này cho người tiêu dùng khác và nó sẽ chỉ được sử dụng bởi một khách hàng do bạn phát triển, bạn có thể muốn xem xét WS-Security và WCF. Có một mô tả giải trí về sự khác biệt bằng cách sử dụng trình điều khiển xe máy trần truồng như một phép ẩn dụ here.

+0

Tôi sẽ sử dụng nhiều ngôn ngữ (Java, Obj-C và C# /. NET) vì vậy tôi không biết liệu phương thức ws-security/wcf có hoạt động hay không. Phương thức chứng chỉ ứng dụng khách có đa nền tảng không? – tamaslnagy

+0

Nếu nó là nền tảng chéo, tôi khuyên bạn nên gắn bó với REST. Chứng chỉ ứng dụng khách là đa nền tảng. –

+0

Âm thanh tốt. Tôi sẽ xem xét nó.Ngoài ra, tôi không bao giờ hiểu làm thế nào đăng ký ban đầu đã diễn ra với hệ thống xác thực cơ bản, đó là, khi tên người dùng và mật khẩu đã nhập chưa có trong cơ sở dữ liệu máy chủ. – tamaslnagy

1

Nếu từ khách hàng/thiết bị khác, xác thực dựa trên mã thông báo có thể phù hợp với bạn.

Ý tưởng rất đơn giản, bạn có phương thức xác thực trong dịch vụ web của bạn. Phương thức này có trách nhiệm kiểm tra thông tin xác thực và phát hành 'Mã thông báo'. Một số cấu trúc đơn giản như chuỗi SHA1 hoặc MD5 mà tất cả các cuộc gọi khách hàng khác đang sử dụng.

Nếu khách hàng được xác thực, nó lưu trữ mã thông báo cho toàn bộ thời lượng phiên. Phần còn lại của các phương thức dịch vụ Web, như SaveScore chỉ chấp nhận mã thông báo làm tham số. Sau đó, họ chịu trách nhiệm kiểm tra xem nó có hợp lệ hay không. Nếu mã thông báo không hợp lệ thì cuộc gọi không được phân phối.

+0

Nếu có thể, tôi muốn xác thực cơ bản hơn các phương thức dựa trên mã thông báo. – tamaslnagy

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