Механизм входа в OpenID - оставайтесь в системе - PullRequest
4 голосов
/ 13 декабря 2011

Я занимаюсь разработкой веб-сайта на PHP и пытаюсь использовать OpenID для входа в систему. Я хочу поведение, подобное StackOverflow's. Под этим я подразумеваю, что всякий раз, когда я открываю stackoverflow, я уже выполнил вход. Я нашел два связанных вопроса о StackOverflow:

OpenId + запомнить меня / оставаться в системе

Войдите через Twitter и оставайтесь в системе (PHP)

Я понимаю, что должен войти в систему пользователя, и если это его / ее впервые, я должен зарегистрировать пользователя и установить cookie в его / ее системе. Однако, что я хочу знать, что я должен хранить в куки? Сочетание имени пользователя и пароля? Это похоже на проблему безопасности. И другой вопрос, где я должен проверить файл cookie? Я был бы признателен за простой учебник / пример кода. Спасибо.

1 Ответ

8 голосов
/ 19 декабря 2011

Это базовое управление сеансами веб-приложений с помощью файлов cookie, и OpenID здесь не имеет значения.

Нет, абсолютно не храните имя пользователя и пароль в куки.Cookie-файлы действуют как «токены на предъявителя», то есть тот, кто имеет cookie-файл, попадает в него. Лучшее, что можно сохранить в cookie-файле, - это неосуществимый и произвольный ключ, который вы можете использовать для поиска реальной информации в таблице в вашем приложении.Таким образом, пользователь обнаруживает cookie с «myappsession» и значением «234871nb341adf», привязанным к вашему домену.Затем ваше приложение будет искать значение «234871nb341adf» в локальном хранилище данных и проверять, связано ли оно с действительным пользователем.Вам лучше всего также проверить, как давно этот пользователь был там и еще много чего.Если это допустимый сеанс и он находится в пределах вашего времени и пределов использования, пользователь автоматически входит в систему.

Для дополнительной паранойи со стороны RP вы можете использовать режим OpenID checkid_immediate для выполнения фонового вызовачтобы увидеть, вошел ли пользователь в свой IdP.Если это не так, то вы, по крайней мере, знаете, к какому провайдеру попытаться отправить их для повторной проверки, и сможете ли вы обеспечить лучший пользовательский опыт.

Если вы хотите, чтобы ваш сайт был действительно безопасным, вам следует сделать это.все ваши сеансы через HTTPS и пометьте свои куки как «Защищенные» и «HTTPOnly», что описано на странице руководства по setcookie функциям: http://php.net/manual/en/function.setcookie.php

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