Je dois concevoir un "widget", un script que les partenaires intégreront dans leurs sites Web pour afficher une interface utilisateur et passer des appels à notre API.
Fondamentalement, il affichera nos données sur ces sites en fonction de certains identifiants qu'ils fournissent dans nos appels API. Ce que nous aimerions éviter, c'est que quelqu'un abuse de l'API et l'utilise pour gratter l'intégralité de notre catalogue.
Chaque partenaire qui intègre notre script recevra une clé publique qui doit être fournie lors de l'appel de l'API. Une idée serait de leur demander d'ajouter cette clé lors du chargement du script, par exemple:
<script src="//initrode.com/widget/loader.js?key=xxxx"></script>
De cette façon, la demande de script peut être utilisée pour enregistrer la paire IP clé / source et répondre aux appels d'API suivants uniquement si la paire clé / IP correspond à une paire enregistrée (avec une durée de vie limitée et une limite de demandes par jour).
Je ne suis pas sûr que ce soit une bonne idée, car il s'agit évidemment de sécurité grâce à l'obscurcissement (quelqu'un rechargeant le script le contournera complètement); mais je ne vois pas d'autre moyen de restreindre l'accès. Je ne peux pas fournir une clé unique à chaque utilisateur, uniquement aux partenaires. Je ne peux pas utiliser de système à clé privée car tout le code sera accessible à tous. Il s'agit essentiellement de restreindre l'accès à une API publique, c'est-à-dire contradictoire dans sa définition.
Que pensez-vous de cette solution et que feriez-vous de ces contraintes?