Devo progettare un "widget", uno script che i partner incorporeranno nei loro siti web per visualizzare alcune UI e fare chiamate alla nostra API.
Fondamentalmente mostrerà i nostri dati su questi siti sulla base di alcuni ID che forniscono nelle nostre chiamate API. Ciò che vorremmo evitare è qualcuno che abusa dell'API e lo utilizza per analizzare l'intero catalogo.
Ogni partner che incorpora il nostro script riceverà una chiave pubblica che deve essere fornita quando chiama l'API. Un'idea sarebbe chiedere loro di aggiungere questa chiave quando caricano lo script, ad esempio:
<script src="//initrode.com/widget/loader.js?key=xxxx"></script>
In questo modo la richiesta dello script può essere utilizzata per registrare la coppia IP chiave / sorgente e rispondere alle successive chiamate API solo se la coppia chiave / IP corrisponde a una registrata (con una durata limitata e un limite alle richieste per giorno).
Non sono sicuro che sia una buona idea dato che è ovviamente la sicurezza attraverso l'offuscamento (qualcuno che ricarica la sceneggiatura la ignorerà completamente); ma non vedo nessun altro modo per limitare l'accesso. Non posso fornire una chiave univoca a tutti gli utenti, ma solo ai partner. Non posso usare un sistema a chiave privata poiché tutto il codice sarà disponibile a chiunque. In pratica limita l'accesso a un'API pubblica, ad esempio contraddittoria nella sua definizione.
Cosa ne pensi di questa soluzione e cosa faresti con questi vincoli?