Что мешает разработчику получить несколько ключей API - PullRequest
5 голосов
/ 10 февраля 2011

Большинство API запрашивают у разработчиков ключ API.Затем ключ API используется для ограничения скорости.Что мешает разработчику получить несколько ключей API для предотвращения ограничения скорости?

Проблема, с которой я сталкиваюсь, заключается в принятии решения о выдаче ключа API.Единственное, что я нашел работающим - это выдать больше «ключа разработчика».

  • Я не нашел способа реально оценить ограничение использования приложения (кто-то мог получить несколько ключей и последовательно передать их в свое приложение, чтобы получить более высокие ставки для этого приложения)
  • и я не нашел способа сохранить ключ для каждого приложения (кто-то мог получить ключ и использовать его в нескольких доменах)

1 Ответ

5 голосов
/ 10 февраля 2011

Ключ API не является подходящим инструментом для ограничения скорости , особенно если API вызывается на стороне сервера.Это работает, если код интегрирован в браузер конечного пользователя, поскольку он служит «нейтральной почвой», которая может гарантировать, что идентификация приложения не будет подделана, но не если он вызывается из службы или приложения, написанного вашими разработчиками-клиентами.

Контроль использования ресурсов является экономической проблемой , поэтому он требует экономического решения.Требование использования уникального токена hashcash для каждого вызова - хороший способ обеспечить это.(Hashcash - это схема проверки работоспособности - она ​​требует от вызывающего абонента доказать, что он потратил кучу процессорного времени на бессмысленную задачу, чтобы доказать, что запрос имеет для них значение.)Он также масштабируется в зависимости от нагрузки - если ваш сервис перегружен, вы можете динамически увеличивать «цену» в начальных нулевых битах, требуемых в токене;каждое увеличение на один бит уменьшает частоту запросов вдвое.(Просто убедитесь, что ваш API может сообщать "цену" хеш-кэша, если он динамический.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...