Безопасная аутентификация Twitter OAuth в JavaScript / jQuery (плюс серверный помощник) - PullRequest
6 голосов
/ 14 февраля 2012

Каков безопасный способ аутентификации Twitter OAuth в JavaScript?

Я пытаюсь написать программу, позволяющую пользователю анализировать его использование в Твиттере и подписчиков / друзей. Я написал версию для сервера, которая работает с использованием модуля python tweepy.

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

Я вижу другой вопрос, в результате которого это не рекомендуется и небезопасно: JavaScript OAuth войдите через Twitter

Что имеет смысл, если кто-то отправлял секрет пользователя (приложение) или доступ (пользователь) в JavaScript приложения.

Но почему я не могу создать URL на стороне сервера, как здесь - http://djangosnippets.org/snippets/1353/

Затем отправьте URL-адрес аутентификации обратно в браузер, что-то вроде этого, с помощью инструмента OAuth на странице «Мои приложения» в Twitter (недействительные учетные данные)

GET & HTTPS% 3A% 2F% 2Fapi.twitter.com% 2F1% 2F & получить% 252Faccount% 252Fverify_credentials_json% 3D% 26oauth_consumer_key% GD0bgcgMU4MDwNfKQpLFQS3% 26oauth_nonce% 3D24ad5049501dee1292afd8cf22307d68% 26oauth_signature_method% 3DHMAC-SHA1% 26oauth_timestamp% 3D1329173626% 26oauth_token% uPUpxsBc3D283768289LtQ6R1Ez1KeD8DOSsm5XpqJaKI28ysYh% 26oauth_version% 3D1 0,0

Затем пусть jQuery использует это для аутентификации с учетными данными пользователя и запускает анализ.

Это значительная часть работы, я бы не хотел этого делать, а потом узнал, что она не работает или небезопасен. (или это уже сделано)

Это безопасно? Кажется, он не раскрывает никаких секретов.

Будет ли это работать?

Есть ли какие-нибудь указатели / примеры, касающиеся правильного способа аутентификации для noob jQuery, с необходимой авторизацией: обработка заголовка и cookie / перенаправления?

Мне кажется, что я что-то упустил, и либо есть причина, по которой это не сработает, либо она уже должна где-то существовать, но не нашла этого. Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

Проблема, мистер Макнатс, в том, что oAuth требует, чтобы вы передавали секрет своего потребителя, поэтому даже если вы создадите URL-адрес на сервере, вы все равно передадите его обратно на веб-страницу, которая по-прежнему будет открыта для вашего потребителя. секрет через HTTP-прокси.

Чтобы предотвратить раскрытие вашего секрета, вам нужно использовать прокси-сервер для выполнения запроса авторизации в твиттере и вернуть токен oauth обратно в браузер. Если вы действительно беспокоитесь о масштабе, я бы посмотрел на платное решение, такое как GAE или Heroku.

0 голосов
/ 14 февраля 2012

Я не очень хорошо понимаю подход, который вы предлагаете. Но в общих чертах OAuth не может быть безопасно реализован на стороне клиента браузера (кроме безопасных закрытых сред, таких как Java или Flash). Реализация OAuth-процесса на Javascript вполне возможна, но вы выставите свой секретный / потребительский токен. Так что любой сможет заменить ваше приложение идентифицировать себя с вредными намерениями, такими как кража конфиденциальных данных ваших пользователей. Если вы все еще хотите работать с JS, я рекомендую вам внедрить безопасный процесс (аутентификация и окончательное хранение токенов) на стороне сервера, используя Node.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...