Мені потрібно розробити "віджет", сценарій, який партнери вставлятимуть на свої веб-сайти, щоб відобразити якийсь інтерфейс користувача та здійснити дзвінки до нашого API.
В основному він відображатиме наші дані на цих сайтах на основі деяких ідентифікаторів, які вони надають у наших дзвінках API. Чого ми хотіли б уникнути, це те, що хтось зловживає API та використовує його, щоб викреслити весь наш каталог.
Кожному партнеру, який вбудує наш сценарій, буде надано відкритий ключ, який потрібно надати під час виклику API. Ідеєю було б попросити їх додати цей ключ під час завантаження сценарію, наприклад:
<script src="//initrode.com/widget/loader.js?key=xxxx"></script>
Таким чином, запит на скрипт може використовуватися для реєстрації IP-пари ключа / джерела та відповідати на наступні виклики API лише у тому випадку, якщо пара ключів / IP відповідає зареєстрованому (з обмеженим терміном служби та обмеженням на запит на день).
Я не впевнений, що це гарна ідея, оскільки це, очевидно, безпека через затуманення (хтось, перезавантажуючи сценарій, повністю обійде його); але я не бачу іншого способу обмеження доступу. Я не можу надати унікальний ключ кожному користувачеві, лише партнерам. Я не можу використовувати систему приватного ключа, оскільки весь код буде доступний кожному. В основному це обмеження доступу до публічного API, тобто суперечливе його визначення.
Що ви думаєте про це рішення і що б ви зробили з цими обмеженнями?