Подтвердить что ты не робот

Как можно не разоблачить секретный ключ с помощью библиотеки Javascript OAuth?

Глядя на Twitter OAuth Libraries, я увидел эту заметку:

Будьте осторожны при использовании JavaScript с OAuth. Не подвергайте свои ключи.

Затем, глядя на jsOAuth examples, я заметил, что ключи отображаются в коде.

Итак, мой вопрос: как можно не подвергать свои ключи при использовании библиотеки OAuth в Javascript?

Спасибо.

UPDATE: Хорошо, возможно, jsOAuth не является подходящей библиотекой, но как можно выполнить аутентификацию с помощью OAuth на полном веб-сайте Javascript?

4b9b3361

Ответ 1

Как указано в документации, связанной вами:

Написанная в JavaScript, jsOAuth стремится стать полнофункциональной библиотекой OAuth с открытым исходным кодом для использования в Adobe AIR, Appcelerator Titanium и PhoneGAP. На самом деле, где-нибудь, что javascript можно использовать и имеет междоменные XMLHttpRequests. В целях безопасности jsOAuth не запускается в браузере. Браузеры упоминаются здесь только для запуска набора тестов. Если вам нужен jsOAuth в браузере, напишите расширение.


Хороший ответ на добавленный вами вопрос можно найти здесь:

Ответ 2

Единственный разумный способ, прямо сейчас сделать OAuth 1 в браузере, - маршрутизировать API-вызовы через ваш сервер.

Просто, насколько я понял, просто нет. Если вы делаете OAuth 1.0a вызовы через JavaScript из браузера → вам нужно будет разоблачить секрет вашего потребителя и секрет доступа к токенам, по крайней мере, для конечного пользователя.

Вы не можете сохранить эти учетные данные в:

  • cookie, пользователь может их найти.
  • локальное хранилище, пользователь может их найти (лучше, чем cookie, хотя, поскольку он не влечет за собой посылки cookie взад и вперед все время по HTTP)
  • в javascript пользователь может их найти (хотя это, вероятно, лучший выбор, поскольку его легче скрывать).

Если бы это был только секретный токен доступа, который был разоблачен для конечного пользователя, это было бы терпимо, поскольку на самом деле он/она выполнили аутентификацию вашей заявки. Но потеря вашей потребительской тайны действительно не такая уж горячая, это означает, что ваше приложение имеет право на кражу личных данных. 1. Кто-то другой может написать приложение, которое утверждает, что это ваше приложение.

Даже если вы сделали это безопасно работать в браузере, вам мешают блоки защиты от перекрестных доменов.

Ответ 3

Вы также можете сделать script, который отправляет на сервер все необходимые значения и параметры для выполнения подписания.

Подписанный URL-адрес затем может быть отправлен обратно клиенту (браузеру), который, в свою очередь, выполняет фактический запрос.

Я реализовал OAuth 1.0a в API Twitter таким образом, используя jsonp-запросы. Преимущество этого заключается в том, что тело ответа не передается через ваш сервер, сохраняя пропускную способность.

Таким образом, вы можете иметь свой cookie и съесть его тоже.