Vue d'ensemble:
Mon entreprise a mis au point un taux limité de l'API. Notre but est de deux ordres:
- A: Créer une forte développeur de l'écosystème autour de notre produit.
- B: Démontrer la puissance de notre API en utilisant le moteur de notre propre application.
Précisions: Pourquoi limiter la vitesse?
Nous taux limite de notre API, parce que nous le vendre comme un complément à notre produit. L'accès anonyme à notre api a un seuil très bas pour les appels API par heure, tandis que nos clients sont autorisés à plus de 1000 appels par heure ou plus.
Le Problème:
Nos limitée dans le taux de l'API est idéal pour le développeur de l'éco-système, mais pour que nous dogfood il nous ne pouvons pas nous permettre d'être limitée à la même limitation de vitesse. Le front-end de notre API javascript, de faire directement des appels AJAX à l'API.
La question est donc:
Comment protégez-vous une api de sorte que la limitation de vitesse peut être enlevé lorsque, dans le processus de la suppression de ce de limitation de vitesse ne peut pas être facilement usurpée?
Exploré des Solutions (et pourquoi ils n'ont pas de travail)
Vérifier le référent à l'encontre de l'en-tête d'hôte. -- Viciée parce que le référent est facilement truquées.
Utiliser un HMAC pour créer une signature en fonction de la demande et un secret partagé, puis vérifier la demande sur le serveur. -- Viciée parce que le secret et l'algorithme peut facilement être déterminée par la recherche dans le front-end Javascript.
Proxy la demande et signer la demande dans le proxy -- Encore imparfait, comme le proxy lui-même expose l'API.
La Question:
Je suis à la recherche pour les esprits brillants sur un débordement de pile de présenter des solutions de rechange. Comment voulez-vous résoudre ce problème?