Muszę zaprojektować „widget”, skrypt, który partnerzy będą osadzać na swoich stronach internetowych, aby wyświetlać interfejs użytkownika i wykonywać połączenia z naszym interfejsem API.
Zasadniczo będzie wyświetlać nasze dane w tych witrynach na podstawie niektórych identyfikatorów podanych w naszych wywołaniach API. Chcielibyśmy uniknąć nadużywania interfejsu API i używania go do zeskrobywania całego naszego katalogu.
Każdy partner, który osadzi nasz skrypt, otrzyma klucz publiczny, który należy podać podczas wywoływania interfejsu API. Pomysłem byłoby poproszenie ich o dodanie tego klucza podczas ładowania skryptu, np .:
<script src="//initrode.com/widget/loader.js?key=xxxx"></script>
W ten sposób żądanie skryptu może zostać użyte do zarejestrowania pary klucz / źródłowy adres IP i odbierania kolejnych wywołań API tylko wtedy, gdy para klucz / adres IP pasuje do zarejestrowanej pary (z ograniczonym czasem życia i ograniczeniem liczby żądań dziennie).
Nie jestem pewien, czy to dobry pomysł, ponieważ to oczywiście bezpieczeństwo poprzez zaciemnianie (ktoś, kto przeładuje skrypt, całkowicie go ominie); ale nie widzę innego sposobu ograniczenia dostępu. Nie mogę dostarczyć unikalnego klucza każdemu użytkownikowi, tylko partnerom. Nie mogę użyć systemu klucza prywatnego, ponieważ cały kod będzie dostępny dla każdego. Zasadniczo ogranicza dostęp do publicznego API, tzn. Jest sprzeczny w swojej definicji.
Co sądzisz o tym rozwiązaniu i co zrobiłbyś z tymi ograniczeniami?