2011-02-10 15 views
5

Hầu hết các API yêu cầu nhà phát triển lấy khóa API. Khóa API sau đó được sử dụng để giới hạn tốc độ. Điều gì là để ngăn chặn một nhà phát triển nhận được nhiều khóa API như một cách để ngăn chặn giới hạn tốc độ?Điều gì ngăn nhà phát triển nhận được nhiều khóa API

Vấn đề tôi đang gặp phải là quyết định cách phát hành khóa API. Điều duy nhất tôi tìm được khi làm việc là phát hành thêm một "khóa phát triển".

  • tôi đã không tìm thấy một cách để thực sự đánh giá hạn chế sử dụng của một ứng dụng (ai đó có thể có được nhiều phím và trình tự nuôi sống họ để ứng dụng của mình để có được mức giá cao hơn cho một ứng dụng này)
  • và tôi có không tìm thấy một cách để giữ chìa khóa cho mỗi ứng dụng (ai đó có thể lấy chìa khóa và sử dụng nó trên nhiều lĩnh vực)

Trả lời

5

một khóa API không phải là công cụ phù hợp với tốc độ hạn chế, đặc biệt là nếu API là trở lại -end có thể gọi được. Nó hoạt động nếu mã được tích hợp ở trình duyệt của người dùng cuối, vì nó đóng vai trò "nền tảng trung lập" có thể đảm bảo rằng nhận dạng ứng dụng không bị giả mạo, nhưng không phải là mã được gọi từ dịch vụ hoặc ứng dụng được viết bởi các nhà phát triển ứng dụng khách của bạn .

Kiểm soát sử dụng tài nguyên là một vấn đề kinh tế, vì vậy nó kêu gọi một giải pháp kinh tế. Yêu cầu mã thông báo mỗi cuộc gọi hashcash duy nhất là một cách hay để thực thi điều này. (Hashcash là một chương trình chứng minh-làm việc - nó đòi hỏi người gọi để chứng minh họ đã chi tiêu một loạt thời gian CPU trên một nhiệm vụ vô nghĩa như một cách để chứng minh yêu cầu có giá trị cho họ.)

Nó là cũng có thể mở rộng tùy thuộc vào tải - nếu dịch vụ của bạn đang bị choáng ngợp, bạn có thể tự động tăng "giá" trong các bit 0 không cần thiết trong mã thông báo; mỗi tăng một bit sẽ giảm tỷ lệ yêu cầu xuống một nửa. (Chỉ cần đảm bảo API của bạn có thể truyền đạt giá "hash" băm nhỏ nếu nó là động.)

+0

Tôi tự hỏi, làm cách nào để tạo một API không phải là "back-end có thể gọi được"? – silow

+0

+1 liên kết hashcash thú vị – orangepips

+0

@silow Tôi đang nghĩ về một thứ như Google Maps, nơi API công khai là một phần của ứng dụng tương tác có thể nhúng trong trình duyệt; HTTP API giữa thành phần JavaScript của Google Maps và các máy chủ back-end của Google là không công khai. –

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