Управление сеансом в приложении REST после аутентификации с помощью OpenID - PullRequest
7 голосов
/ 01 февраля 2011

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

У меня вопрос что дальше? после аутентификации!

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

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

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

1 Ответ

14 голосов
/ 01 февраля 2011

Важно:

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

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

Так как это приложение REST, я буду должны использовать куки для сессии управление .. верно?

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

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

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

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

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

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

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


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

PS:

Сеанс в банке печенья дает вам базовое введение в сеансы (хотя я не вижу упоминания о фиксации сеанса: $).

...