2013-07-22 43 views
13

Tôi đang cố gắng tìm ra cách tốt nhất để xử lý xác thực người dùng cho ứng dụng di động của tôi (iOS & Android) và API (PHP).Mã thông báo API là gì

Từ những gì tôi đã nghiên cứu các tùy chọn bao gồm:

Basic auth qua HTTPS - Kiểm tra tên người dùng/mật khẩu của người sử dụng cho mọi yêu cầu.

Phiên - Gửi ID phiên với mỗi yêu cầu; máy chủ duy trì trạng thái. Vì vậy, ứng dụng gửi tên người dùng/mật khẩu và kiểm tra máy chủ cho người dùng đã đăng nhập trên các yêu cầu tiếp theo, giống như trang web của tôi.

Mã thông báo API - Ứng dụng dành cho thiết bị di động gửi tên người dùng/mật khẩu và nhận lại mã thông báo, sau đó nối nó vào các yêu cầu tiếp theo. Mã thông báo được lưu trữ trong DB và được kiểm tra theo từng yêu cầu.

Tôi đoán lời giải thích của tôi về mã thông báo API không chính xác vì chúng dường như giống với phiên vì tôi lưu trữ ID phiên trong DB.

  1. Tôi có thể sửa giải thích về mã thông báo API không. Chúng là gì? Chúng khác với ID phiên làm việc như thế nào?
  2. Các ưu điểm của mã thông báo API là gì?
  3. Là oAuth (nếu chúng tôi đơn giản hóa việc sử dụng nó) chỉ là một giao thức để tạo "mã thông báo API"?

Trả lời

16

Tôi không phải chuyên gia nhưng tôi sẽ cung cấp cho bạn một vài cent Tôi đã nhặt:

1) Token API là một chút của một thuật ngữ chung. Thông thường, mã thông báo API là mã định danh duy nhất của một ứng dụng yêu cầu quyền truy cập vào dịch vụ của bạn. Dịch vụ của bạn sẽ tạo một mã thông báo API cho ứng dụng để sử dụng khi yêu cầu dịch vụ của bạn. Sau đó, bạn có thể đối sánh mã thông báo mà họ cung cấp cho mã bạn lưu trữ để xác thực.

Có thể sử dụng id phiên nhưng mục đích của nó khác với mã thông báo API. Id phiên không phải là một hình thức xác thực mà là kết quả của ủy quyền. Thông thường một phiên được thiết lập khi người dùng đã được ủy quyền sử dụng tài nguyên (chẳng hạn như dịch vụ của bạn). Do đó, id phiên được tạo khi người dùng được cấp quyền truy cập vào tài nguyên. Mã thông báo API là hình thức xác thực tương tự như tên người dùng/mật khẩu.

2) Mã thông báo API là sự thay thế để gửi một số kết hợp tên người dùng/mật khẩu qua HTTP không an toàn. Tuy nhiên, vấn đề vẫn tồn tại mà ai đó có thể lấy và sử dụng mã thông báo API thay thế.

3) Theo cách có. Đó là một phương pháp để giữ mã thông báo API "mới". Thay vì đi qua cùng một mã thông báo API, bạn yêu cầu mã thông báo truy cập khi bạn muốn sử dụng dịch vụ. Các bước OAuth 2.0 như sau:
      a) Yêu cầu được gửi để phục vụ với các thông tin của một số loại
      b) phản ứng thành công trả về một mã
      c) Một yêu cầu dịch vụ được thực hiện với mã
      d) Phản hồi thành công trả về mã thông báo truy cập để ký mỗi yêu cầu API từ đó cho đến khi kết thúc.

Rất nhiều nhà cung cấp dịch vụ lớn hơn sử dụng OAuth 2.0 tại thời điểm này. Nó không phải là một giải pháp hoàn hảo nhưng nó có lẽ là phương pháp bảo mật API được bảo mật rộng, an toàn nhất được sử dụng tại thời điểm này.

+0

Bạn có thể xây dựng trên "Id phiên không phải là một hình thức xác thực mà là kết quả của ủy quyền".? – paul

+0

Cập nhật câu trả lời của tôi, trong ngắn hạn - Id phiên không phải là một hình thức xác thực, mã thông báo API là. –

+0

Bạn đang nói một khóa API chỉ xác định các yêu cầu đến từ ứng dụng của tôi và không liên quan gì đến việc người dùng đăng nhập qua ứng dụng? Bởi vì từ những gì tôi đã đọc API của tôi nên là không trạng thái và không sử dụng phiên. – paul

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