2009-01-26 31 views
10

Một số API dịch vụ web có bạn đăng ký khóa API. Ví dụ, các dịch vụ Web UPS yêu cầu một khóa, được bao gồm trong các cuộc gọi đến dịch vụ của họ - Ngoài tên người dùng và mật khẩu.Tại sao một số nhà cung cấp API yêu cầu khóa API?

Khóa này được nhà cung cấp sử dụng là gì? Có lẽ UPS là người duy nhất yêu cầu cả khóa API và tên người dùng/mật khẩu? Một ý tưởng là họ sử dụng nó để giới hạn hoặc đo lường mức sử dụng API, nhưng dường như với tôi rằng cài đặt trong hồ sơ người dùng có thể dễ dàng làm điều tương tự - đặc biệt vì bạn thường phải có tài khoản w/tên người dùng và mật khẩu để nhận được API ngay từ đầu.

+0

Tại sao bạn tạo một wiki này? – GEOCHET

+0

Bởi vì tôi thích sự yêu thích! :) –

Trả lời

5

Có hai trường hợp sử dụng chiếm ưu thế. Đầu tiên là đo lường, theo dõi và hạn chế sử dụng API. Nếu ai đó đang xây dựng một dịch vụ cho phép các bên thứ ba truy cập nó, nhà cung cấp dịch vụ có thể muốn kiểm soát (hoặc ít nhất là biết) có quyền truy cập để họ có thể thử và ngăn chặn những thứ như tấn công từ chối dịch vụ. Về mặt đo lường và theo dõi, thông tin thú vị có thể thu được như biết ứng dụng nào phổ biến để truy cập dịch vụ hoặc tính năng nào mà mọi người sử dụng nhiều nhất.

Trường hợp sử dụng khác có liên quan đến bảo mật và xác thực.Nó là không khôn ngoan cho một nhà cung cấp dịch vụ để có các ứng dụng và dịch vụ của bên thứ ba yêu cầu người dùng từ bỏ tên người dùng và mật khẩu của họ cho dịch vụ chính. Đây là một tiếp xúc rất lớn. Đó là lý do tại sao nhiều dịch vụ chuẩn hóa trên các giao thức như OAuth, cung cấp quyền truy cập được ủy quyền thông qua ủy quyền cho dữ liệu của người dùng. Mặc dù không rõ ràng, nhưng việc phân phối thông tin xác thực người dùng cho các bên không xác định và không đáng tin cậy là điều chắc chắn hơn.

+0

Khi nói đến hạn chế sử dụng API, không thể sử dụng Khóa API, ví dụ, bên thứ ba "Ứng dụng A" và giả lập nó thông qua "Ứng dụng khác" B "và nhận được yêu cầu phục vụ? Làm thế nào là mục đích an ninh phục vụ ở đây trong trường hợp này? –

1

Thông thường nó được sử dụng để có được số liệu thống kê về số lượng ứng dụng thực hiện truy vấn API. Tôi cho rằng việc hỏi tên người dùng/mật khẩu bằng khóa API là điều không thể tin được trong một số trường hợp, nhưng đó là cách nó được triển khai - vì vậy chúng tôi không thể làm điều gì đó với nó.

Họ yêu cầu khóa API vì bạn có thể có nhiều API trong cùng một tài khoản - trong trường hợp bạn có nhiều trang web sử dụng cùng một API.

0

Họ có thể sử dụng nó để biểu thị phiên bản API bạn đang cố gắng sử dụng. Có lẽ trong phiên bản 1.0, có một phương thức nhận POST trên www.UPS.com/search và có một phương thức khác trong phiên bản 2.0 tại cùng một địa chỉ, nhưng có một bộ tham số khác hoặc thậm chí trả về dữ liệu ở định dạng khác/Phong cách. Chương trình của bạn được xây dựng trên phiên bản V1.0 và dự kiến ​​một hợp đồng API nhất định. Họ muốn có thể tạo V2.0 mà không can thiệp vào sản phẩm của khách hàng.

Đó chỉ là phỏng đoán, nhưng nó có vẻ tốt với tôi.

0

Tôi nghĩ Gracenote thực hiện một điều tương tự cho cddb. Tôi quên các chi tiết, nhưng tôi nhớ điều gì đó về một số mã thông báo.

(Họ có/có quy tắc thực sự hà khắc về việc sử dụng dịch vụ của họ quá.)

Simon nhắc nhở tôi những gì điều Gracenote là. Gracenote và Fedex và các dịch vụ web khác có rất nhiều nhà phát triển viết ứng dụng cho phần mềm. Vì vậy, các nhà phát triển nhận được một mã thông báo để đưa vào ứng dụng của họ, nhưng người dùng cuối có tên người dùng và mật khẩu của riêng họ. Nó cho phép các dịch vụ giữ một mắt trên lạm dụng các chương trình, vv Đó có lẽ là lý do chính te. (giống như trình duyệt hoặc webbot thông báo cho máy chủ web là ai/đó là gì)

4

Hầu hết thời gian là theo dõi cách nhà phát triển sử dụng web-api. Nếu họ bằng cách nào đó không đồng ý với việc bạn sử dụng api, nó cung cấp một phương tiện để họ tắt nó/bạn xuống mà không làm tổn thương những người dùng khác. Và số liệu thống kê cho mỗi người dùng/ứng dụng luôn có giá trị.

Tôi đã sử dụng api flickr - trong tình huống đó khóa là của bạn, nhưng dữ liệu đăng nhập có thể là của những người đang sử dụng ứng dụng của bạn, vì vậy khóa api là cách duy nhất để phân biệt giữa các ứng dụng.

+0

yep - bây giờ tôi nhớ - cùng một điều với gracenote – Tim

0

Ban đầu, Blogger yêu cầu bạn đăng ký khóa API (a la Google Maps) và sử dụng nó để hạn chế quyền truy cập vào API. Khi Blogger phát triển thành Metaweblog, yêu cầu API trở nên ít quan trọng và Blogger không còn yêu cầu bạn đăng ký khóa. Theo ghi nhận của người khác, nó vẫn có thể được sử dụng cho mục đích theo dõi.

0

Trong trường hợp của chúng tôi, khách hàng của chúng tôi muốn nó cho:

  • Tracking/phân tích - tìm ra ai đang làm gì và xây dựng những sản phẩm. Bởi vì một số người dùng là ứng dụng dành cho máy tính để bàn, chỉ cần xem các liên kết giới thiệu không phải lúc nào cũng đủ.
  • Quyền - tài nguyên nào người dùng có quyền truy cập? Người dùng có thể tạo ứng dụng có quyền truy cập vào tài nguyên được chỉ định như thế nào?
  • Cấp phép/pháp lý - thực thi người dùng đã đọc và chấp nhận thông tin cấp phép/cấp phép.
  • Bảo mật - chuyển xung quanh tên người dùng/mật khẩu thực sự là một ý tưởng tồi.
Các vấn đề liên quan