Я попытаюсь объяснить проблему.JS API Аутентификация
Существует некоторая услуга, которая имеет API, полностью встроенный в JS (ajax/json) для сайтов-партнеров. Партнером сайта является лицо, у которого есть контракт с услугой. Таким образом, доступ к API имеет только определенные лица (сайты-партнеры). Что мне нужно сделать, так это создать некоторый способ авторизации для службы, чтобы узнать, действительно ли это запрос с сайта-партнера.
Сложность в том, что API полностью написан в JS. Вот почему ни HTTP-аутентификация, ни секретный ключ API, ни обмен ключами RSA не подходят для этого типа API, потому что службе нужны некоторые параметры аутентификации для приема, и единственный способ сделать это - передать их через AJAX с помощью JSON формат. Итак, каждый, кто знает, как смотреть в исходном коде страницы, может просто скопировать эти параметры и использовать их по своему усмотрению.
Вариант с ограничением IP тоже не подходит, по крайней мере, потому, что сайт-партнер может размещаться на общедоступном хостинге.
Я думал использовать некоторый ключ API с некоторым нечетким хэшем (только для службы) + отметка времени. Но этот метод рано или поздно станет понятным.
В любом случае, все, что приходит на ум, не вполне подходит. Может, кто-то столкнулся с этой проблемой? Получу любые ответы.
Я знаю разницу между JSON и JS. Я имел в виду, что параметры авторизации буквально будут напечатаны в исходном коде страницы (HTML), потому что API полностью клиентский. Итак, давайте делать вид, что вы являетесь партнером сайта, и я плохой человек, который хочет использовать ваши параметры авторизации и иметь доступ к API, независимо от того, как были сгенерированы параметры (знак сертификата, ключ api, имя пользователя HTTP и имя пользователя пароль и т. д.). Поэтому я просто открываю ваш веб-сайт, нажимаю «Просмотр источника» и выполняю поиск параметров авторизации, копирую их и использую их, как хочу. – Dmitry
Что значит API «полностью клиентский»? Предоставляют ли они фактический код логики приложения в JavaScript? например функции, объекты? И на самом деле они помещают токены авторизации в DOM? –
Да, они действительно хотят хранить токены авторизации в DOM.И моя задача - создать безопасный способ сделать это. Я думаю, без какой-либо авторизации на стороне сервера это невозможно. – Dmitry