Как можно безопасно войти в систему пользователей после предыдущей аутентификации Facebook? - PullRequest
0 голосов
/ 19 октября 2011

Пользователи жалуются, что им приходится заходить слишком часто.Если аутентификация полностью основана на Facebook OAuth, как можно автоматически войти в систему при следующем посещении страницы?

Пример потока пользователей:

  1. Пользователь нажимает «Войти через Facebook»
  2. Пользователь проходит проверку подлинности через Facebook и перенаправляется обратно на сайт
  3. Пользователь подтвержден и вошел в систему.
  4. Пользователь закрывает окно на сайте (но небраузер)
  5. Пользователь заходит через несколько часов и должен повторно войти в Facebook, чтобы снова получить доступ (пользователи жалуются на это)

Идеальный поток пользователей

  • Пользователи автоматически регистрируются при каждом посещении
  • Исключение: Если пользователь нажимает кнопку «Выйти», он долженв следующий раз, когда они посещают.

Как можно сделать это безопасно и надежно?

Примечания:

  • Нет имени пользователя илипароль всегда хранится локально, только локальный идентификатор пользователя и связанный с ним идентификатор пользователя Facebook.
  • "OfflIn Access "уже включен / предоставлен в запросе OAuth 2.0.

Ответы [ 2 ]

0 голосов
/ 20 октября 2011

Используйте метод JS-SDK FB.getLoginStatus() :

FB.getLoginStatus(function(response) {
  if (response.authResponse) {
    // logged in and connected user, someone you know
    // reload page or use ajax to update content of page
  } else {
    // no user session available, someone you dont know
  }
});
0 голосов
/ 20 октября 2011

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

Единственное, с чем вам следует быть осторожным, это то, что значение вашего cookie однозначно идентифицирует пользователя и не может быть подделано другим пользователем. Поскольку вы используете токены offline_permission, вы даже можете использовать его как часть значения cookie, поскольку оно уже уникально для каждого пользователя и «не угадывается» другими пользователями. Другими параметрами может быть md5, состоящий из идентификатора пользователя плюс некоторая секретная строка или даже совершенно случайная строка, которая хранится в вашей базе данных и связана с локальным идентификатором пользователя.

Когда пользователь явно выходит из системы, вы просто очищаете cookie, и в следующий раз ему придется снова проходить аутентификацию.

И, для ясности, я интерпретирую ваш вопрос как касающийся только аутентификации (идентификации), а не авторизации (разрешений), поскольку вы упомянули, что offline_access уже предоставлен.

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