Управление сеансом в приложении REST после аутентификации с помощью OpenID

Я создаю приложение RESTful. Я планирую использовать OpenID для аутентификации пользователей. В настоящее время я использую LightOpenID для аутентификации OpenID и могу аутентифицировать своих пользователей.

Мой вопрос: что дальше? после аутентификации!

  1. Поскольку это приложение REST, мне придется использовать файлы cookie для управления сеансом... верно?
  2. Какие значения я храню в файлах cookie?
  3. Как проверить сеанс и выход пользователя?

Я искал примеры реализации, но все примеры останавливаются на аутентификации и не говорят об управлении сеансом! Я хотел бы знать, как вы управляете сеансами в своих приложениях и, если возможно, передовые методы и проблемы при реализации подхода.

Если вам известны какие-либо эталонные реализации, пожалуйста, дайте мне ссылку.


person Abdel Raoof Olakara    schedule 01.02.2011    source источник


Ответы (1)


Важный:

Сначала несколько важных советов по безопасности, которые вы должны иметь в виду:

Ваши вопросы:

Поскольку это приложение REST, мне придется использовать файлы cookie для управления сеансом... верно?

использование сеансов было бы самым безопасным (лучшим), но, конечно, существует гораздо больше решений для управления сеансами. Но если вы используете только файлы cookie (без php $_SESSION), вам, конечно, следует зашифровать файл cookie. Но я бы посоветовал вам просто использовать $_SESSION.

Какие значения я храню в файлах cookie?

Вы ничего не сохраняете в файлах cookie. $_SESSION создает уникальный файл cookie (автоматически => вам не нужно об этом думать). Все, что вы помещаете в $_SESSION, хранится на сервере, поэтому пользователь не может это прочитать. Вы можете хранить любую информацию, которую хотите хранить в сеансе, но имейте в виду, что лучше НИКОГДА не хранить конфиденциальные данные (пин-коды, кредитные карты, пароли и т. д.) в вашем приложении. Я уже упоминал, что ваш $_SESSION хранится на сервере, но файл cookie, который имеет уникальный идентификатор, соответствующий сеансу, хранящемуся на диске (или в базе данных), может быть угадал(подделал).

Как подтвердить сеанс?

Вы проверяете сеанс, проверяя информацию, хранящуюся внутри сеанса. Я предполагаю, что вы храните не менее $_SESSION['id'] = $openid->identity; внутри сеанса. Имейте в виду, что после того, как пользователь войдет на ваш сайт с помощью openid, вы должны перегенерировать ваш сеанс (идентификатор), чтобы предотвратить фиксацию сеанса.

Как выйти из системы?

вы просто вызываете session_destroy, и все данные, хранящиеся внутри сеанса, будут удалены .


Я надеюсь, что это объяснило все ваши вопросы.

PS:

Сеанс в банке с файлами cookie дает вам общее представление о сеансах (хотя я не вижу его упомянуть фиксацию сеанса :$).

person Alfred    schedule 01.02.2011
comment
спасибо, что дали это откровенное объяснение по управлению сессиями. +5 за предоставленные вами дополнительные информационные ссылки! - person Abdel Raoof Olakara; 01.02.2011