2011-02-10 2 views
5

La plupart des API demandent aux développeurs d'obtenir une clé API. La clé API est ensuite utilisée pour la limitation de débit. Qu'est-ce qui empêche un développeur d'obtenir plusieurs clés API afin d'empêcher la limite de débit?Qu'est-ce qui empêche un développeur d'obtenir plusieurs clés API

Le problème auquel je fais face est de décider comment émettre une clé API. La seule chose que j'ai trouvé de travailler est d'émettre plus d'une "clé de développeur".

  • Je ne l'ai pas trouvé un moyen d'évaluer vraiment limiter l'utilisation d'une application (quelqu'un pourrait obtenir les clés multiples et de les nourrir séquence à son application pour obtenir des taux plus élevés pour celui-app)
  • et je n'ai pas trouvé un moyen de garder la clé par application (quelqu'un pourrait obtenir la clé et l'utiliser sur plusieurs domaines)

Répondre

5

une clé API n'est pas le bon outil pour la limitation du débit, surtout si l'API est de retour -end appelable. Cela fonctionne si le code est intégré au navigateur de l'utilisateur final, car cela sert de "base neutre" qui peut garantir que l'identité de l'application n'est pas usurpée, mais pas si elle est appelée depuis un service ou une application écrite par vos développeurs clients .

Le contrôle de l'utilisation des ressources est un problème économique, il nécessite donc une solution économique. Exiger un jeton unique par appel hashcash est un bon moyen de l'appliquer. (Hashcash est un schéma de preuve de travail - il demande à l'appelant de prouver qu'il a dépensé beaucoup de temps CPU pour une tâche inutile afin de prouver que la requête a de la valeur pour lui.)

également évolutive en fonction de la charge - si votre service est surchargé, vous pouvez augmenter dynamiquement le «prix» des bits zéro de premier plan requis dans le jeton; chaque augmentation d'un bit réduit le taux de demande de moitié. (Assurez-vous simplement que votre API peut communiquer le "prix" du hashcash s'il est dynamique.)

+0

Je me demande comment créer une API qui ne soit pas "back-end callable"? – silow

+0

+1 lien hashcash intéressant – orangepips

+0

@silow Je pense à quelque chose comme Google Maps, où l'API publique fait partie d'une application interactive embarquable qui fonctionne dans le navigateur; l'API HTTP entre le composant JavaScript Google Maps et les serveurs principaux Google n'est pas publique. –