2012-04-29 15 views
1

Я попытаюсь объяснить проблему.JS API Аутентификация

Существует некоторая услуга, которая имеет API, полностью встроенный в JS (ajax/json) для сайтов-партнеров. Партнером сайта является лицо, у которого есть контракт с услугой. Таким образом, доступ к API имеет только определенные лица (сайты-партнеры). Что мне нужно сделать, так это создать некоторый способ авторизации для службы, чтобы узнать, действительно ли это запрос с сайта-партнера.

Сложность в том, что API полностью написан в JS. Вот почему ни HTTP-аутентификация, ни секретный ключ API, ни обмен ключами RSA не подходят для этого типа API, потому что службе нужны некоторые параметры аутентификации для приема, и единственный способ сделать это - передать их через AJAX с помощью JSON формат. Итак, каждый, кто знает, как смотреть в исходном коде страницы, может просто скопировать эти параметры и использовать их по своему усмотрению.

Вариант с ограничением IP тоже не подходит, по крайней мере, потому, что сайт-партнер может размещаться на общедоступном хостинге.

Я думал использовать некоторый ключ API с некоторым нечетким хэшем (только для службы) + отметка времени. Но этот метод рано или поздно станет понятным.

В любом случае, все, что приходит на ум, не вполне подходит. Может, кто-то столкнулся с этой проблемой? Получу любые ответы.

ответ

0

потому что для обслуживания необходимы некоторые параметры аутентификации, и единственный способ сделать это - передать их через AJAX с использованием формата JSON.

Я думаю, вы не понимаете разницу между JSON и JavaScript. JSON - это формат данных, например XML или SOAP. Вам не нужно использовать JavaScript для его просмотра. Существует большая поддержка JSON в PHP, Ruby, Java, Python и других. Обычно JSON передается через HTTP.

Итак, каждый, кто знает, как смотреть в исходном коде страницы, может просто скопировать эти параметры и использовать их по своему усмотрению.

Если ваш поставщик услуг требует вас использовать какой-либо ключ, я действительно сомневаюсь, что они хотят, чтобы вы сделали это в браузере. Вероятно, вам даже не будет позволено делать запрос из-за ограничений Cross Origin (большинство браузеров не позволят вам сделать запрос (особенно POST) доменом, который не является тем, от которого вы запрашиваете его).

Я предполагаю, что вам понадобится выполнить обработку с вашим провайдером на стороне сервера. Если у вашего провайдера есть документация, я проконсультирую его. В противном случае посмотрите, сможете ли вы помочь одному из их разработчиков.

+0

Я знаю разницу между JSON и JS. Я имел в виду, что параметры авторизации буквально будут напечатаны в исходном коде страницы (HTML), потому что API полностью клиентский. Итак, давайте делать вид, что вы являетесь партнером сайта, и я плохой человек, который хочет использовать ваши параметры авторизации и иметь доступ к API, независимо от того, как были сгенерированы параметры (знак сертификата, ключ api, имя пользователя HTTP и имя пользователя пароль и т. д.). Поэтому я просто открываю ваш веб-сайт, нажимаю «Просмотр источника» и выполняю поиск параметров авторизации, копирую их и использую их, как хочу. – Dmitry

+0

Что значит API «полностью клиентский»? Предоставляют ли они фактический код логики приложения в JavaScript? например функции, объекты? И на самом деле они помещают токены авторизации в DOM? –

+0

Да, они действительно хотят хранить токены авторизации в DOM.И моя задача - создать безопасный способ сделать это. Я думаю, без какой-либо авторизации на стороне сервера это невозможно. – Dmitry

Смежные вопросы