Aperçu:
Mon entreprise a développé une API à taux limité. Notre objectif est double:
- R: Créez un écosystème de développeurs solide autour de notre produit.
- B: Démontrez la puissance de notre API en l'utilisant pour piloter notre propre application.
Clarification: Pourquoi limiter le taux?
Nous évaluons limiter notre API, car nous la vendons en complément de notre produit. L'accès anonyme à notre API a un seuil très bas pour les appels d'API par heure, alors que nos clients payants sont autorisés à plus de 1000 appels par heure ou plus.
Le problème:
Notre API à débit limité est idéale pour l'éco-système des développeurs, mais pour nous permettre de la dogfood, nous ne pouvons pas l'autoriser à être limitée à la même limitation de débit. Le frontal de notre API est entièrement JavaScript, effectuant des appels Ajax directs à l'API.
La question est donc:
Comment sécuriser une API afin que la limitation de débit puisse être supprimée là où dans le processus de suppression de cette limitation de débit ne peut pas être facilement usurpée?
Solutions explorées (et pourquoi elles n'ont pas fonctionné)
Vérifiez le référent par rapport à l'en-tête d'hôte. - Imparfait car le référent est facilement truqué.
Utilisez un HMAC pour créer une signature basée sur la demande et un secret partagé, puis vérifiez la demande sur le serveur. - Imparfait car le secret et l'algorithme seraient facilement déterminés en regardant dans le JavaScript frontal.
Proxy la demande et signez la demande dans le proxy - Toujours défectueux, car le proxy lui-même expose l'API.
La question:
Je me tourne vers les esprits brillants de Stack Overflow pour présenter des solutions alternatives. comment résoudrais-tu ce problème?