Вопросы по токену доступа в Facebook - PullRequest
0 голосов
/ 31 августа 2011

Я играю с Facebook Connect, пытаюсь использовать Facebook в качестве средства или аутентификации на моем сайте. В настоящее время мой рабочий процесс выглядит примерно так:

  • Перейти к URL
  • Сервер проверяет куки для AccessToken
  • Если AccessToken существует, автоматически введите имя пользователя / изображение профиля в поле для комментариев и оставьте AccessToken в скрытом поле ввода.
    • отправить страницу клиенту
    • при отправке, проверьте, что токен доступа (который был отправлен с остальной частью формы) является действительным токеном доступа для реального человека. Если это так, добавьте комментарий в базу данных
    • обновить страницу для отображения новых данных
  • если токен доступа отсутствует, замените имя пользователя / изображение профиля на <fb:login-button> вместе с необходимыми <script> с.
    • отправить страницу клиенту
    • Когда пользователь авторизует страницу / входит в Facebook, обновите страницу
    • (вернуться наверх, за исключением того времени, когда должен существовать токен доступа)

Итак, у меня есть несколько вопросов:

  • Это безопасно? Я думал о том, как бы я мог обойтись без двойной аутентификации с Facebook (проверка один раз при генерации страницы и еще раз при отправке комментария), и я не мог придумать другого способа, кроме поддержания моего собственного состояния сеанса с каждый клиент. Это стоит делать?

  • Срок действия маркера доступа истекает при выходе из Facebook? Я думаю, что так и должно быть, но, похоже, я смогу продолжать использовать тот же токен доступа для получения данных (то есть имени, URL и т. Д.) После того, как я вручную перейду на Facebook и выйду из системы. Это потому, что я запрашиваю только общедоступную информацию, и только более навязчивые разрешения истекают при выходе из системы?

  • Учитывая, что каждый человек, который хочет что-то сделать, должен предоставить уникальный токен от Facebook, это должно иметь побочный эффект блокировки CSRF, поскольку каждое действие может быть отслежено с действительной учетной записью Facebook. Это верно?

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Почему бы вам не использовать Facebook Javascript SDK, чтобы определить, вошли ли они в данный момент в Facebook? Это также сделает маркер доступа доступным в Javascript, чтобы вы могли выполнять вызовы API на стороне клиента. Вы также можете получить доступ к тому же серверу токенов доступа через cookie-файл сеанса, установленный Facebook.

2 голосов
/ 31 августа 2011

Я не могу ответить на все ваши вопросы, но могу вам сказать, что наличие токена доступа в скрытом поле на вашей странице рискованно с точки зрения политики, особенно если ваша страница может быть прочитана любым сторонним кодом, таким как как Google Analytics или AdSense. Facebook пригвоздит вас к этому, поскольку он пропускает данные, идентифицирующие пользователя, третьим лицам. Идентификатор пользователя Facebook находится в маркере доступа в виде обычного текста. Facebook имеет автоматизированные процессы, которые сканируют эти материалы, и автоматически блокируют ваше приложение, если оно передает утраченные идентификаторы третьим лицам.

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