Saya harus merancang "widget", sebuah skrip yang akan dimasukkan oleh mitra di situs web mereka untuk menampilkan beberapa UI dan membuat panggilan ke API kami.
Pada dasarnya itu akan menampilkan data kami di situs-situs ini berdasarkan pada beberapa ID yang mereka berikan dalam panggilan API kami. Yang ingin kami hindari adalah seseorang yang menyalahgunakan API dan menggunakannya untuk mengikis keseluruhan katalog kami.
Setiap mitra yang menyematkan skrip kami akan diberikan kunci publik yang harus disediakan saat memanggil API. Suatu gagasan adalah meminta mereka untuk menambahkan kunci ini saat memuat skrip, misalnya:
<script src="//initrode.com/widget/loader.js?key=xxxx"></script>
Dengan cara itu permintaan untuk skrip dapat digunakan untuk mendaftarkan pasangan IP kunci / sumber, dan menjawab panggilan API berikutnya hanya jika pasangan kunci / IP cocok dengan yang terdaftar (dengan masa pakai terbatas, dan batas permintaan per hari).
Saya tidak yakin itu ide yang bagus karena itu jelas keamanan melalui kebingungan (seseorang yang memuat ulang skrip akan benar-benar memotongnya); tapi saya tidak melihat cara lain untuk membatasi akses. Saya tidak dapat memberikan kunci unik untuk setiap pengguna, hanya untuk mitra. Saya tidak dapat menggunakan sistem kunci pribadi karena semua kode akan tersedia untuk siapa saja. Ini pada dasarnya membatasi akses ke API publik, yaitu bertentangan dalam definisi.
Apa pendapat Anda tentang solusi ini, dan apa yang akan Anda lakukan dengan kendala-kendala ini?