2015-02-23 5 views
0

Задача проста. Я хочу использовать Sign In With Twitter как учетные данные пользователя, позволяя им получать доступ к запрещенным зонам сайта и связывать их действия со своей учетной записью.Лучшая практика использования учетных данных Twitter как учетных данных сайта

Я могу подписать их через Twitter. Я возвращаю идентификатор, имя пользователя, маркеры oauth, секретные токены, ...

Теперь предположим, что пользователь делает действия, связанные с сайтом, например, голосование по опросу. Я хочу приписать голосование на их счет.

Что я должен отправить на сервер, чтобы доказать, что голосование идет от пользователя Twitter, который, по его словам, является?

Например, достаточно ли отправить обратно идентификатор Twitter и голос? Могут ли другие получить этот идентификатор, а затем начать голосовать за пользователя?

Должен ли я отправлять идентификатор твиттера, маркеры oauth и секретный токен на мой сервер? Опять же, как проверить, действительны ли эти учетные данные? Нужно ли серверу вызывать запрос на твиттер, чтобы проверить эти учетные данные после каждого действия для конкретного сайта? Это кажется чрезмерным.

У меня есть сервер, который проверяет учетные данные один раз и отправляет некоторые случайные ключи сеанса, а затем просто проверяет ключ сеанса после каждого запроса на оставшуюся часть сеанса?

Этот вид вещей был реализован на тысячах сайтов, поэтому просто интересно, какое это решение здравого смысла. Извините, если этот вопрос задан раньше. В этом случае мы с благодарностью будем ссылаться на ответ.

Кроме того, я на Node.js и использование hello.js в случае, если есть стек-конкретное решение

Благодаря

+0

Я понимаю, что в моем предположении есть неотъемлемая проблема. hello.js позволяет мне выполнять аутентификацию на интерфейсе (с помощью стороннего прокси-сервера). Поскольку мой сервер никогда не видит обмен токенов, он полагается на клиенту, чтобы сказать ему, что он был аутентифицирован, и именно там я укомплектован этим подходом. Вместо этого я закончил использование passport.js, который является проверкой подлинности на сервере. – kane

ответ

0

Сеанс Основная идея прекрасна. Это гарантирует связь между дальнейшими запросами (например, Vote) и идентификатором пользователя Twitter. Единственная проблема, если есть человек в середине, тогда они захватывают ключ сеанса и могут воспроизводить запросы. Это решается с помощью HTTPS, который гарантирует, что никто не перепутался с входящим запросом и, следовательно, гарантирует связь с пользователем. И поскольку ключ сеанса недолговечен, нет никаких шансов, что они могут быть использованы в будущих атаках.

+0

Единственная проблема, которую я вижу с решением для ключевого сеанса, которое я предложил, состоит в том, что он вызывает две проверки токенов, одну на стороне клиента, когда пользователь подписывается с помощью Twitter, и затем снова на стороне сервера для генерации случайного ключа сеанса. Удивление, если есть более эффективный способ – kane

+0

Ну, OAuth уже многоэтапный процесс, поэтому стоимость этого дополнительного шага действительно незначительна по сравнению с преимуществами дополнительной безопасности. – amahfouz

+0

К сожалению, некоторые социальные сети имеют ограничение на количество проверок токенов, которые я могу сделать. например Twitter ограничивается 15 за каждые 15 минут, поэтому это не будет масштабироваться на производственном участке – kane

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