2013-07-16 3 views
1

Если я правильно помню, общедоступные службы, такие как google, обычно предлагают возможность избежать процесса входа в систему в течение 2 недель.Помните сеанс пользователя в течение нескольких недель?

Таким образом, даже при закрытой вкладке, в браузере или даже при перезагрузке ОС пользователь может получить доступ к веб-странице в качестве объекта без необходимости повторного входа в систему.

Вопросов:

  1. Чтобы реализовать это в Apache Shiro, это как раз о тайм-аут сеанса не правда ли, что-то вроде globalSessionTimeout? Таким образом, сеанс хранится и сохраняется в течение 2 недель до тайм-аута отдельно от неактивности.
  2. Это - не - то же самое, как «Запомнить меня» особенность Сиро, где аутентификацией и запоминающийся дифференцированы, правильно?

ответ

2

Сиро или веб-сессия сохраняют состояние аутентификации, то есть если пользователь фактически подтвердил свою идентификацию в дополнение к другому состоянию (атрибуты сеанса и т. Д.).

«Запомнить меня» особенность Shiro только устанавливает куки, удостоверяющий личность, который сообщает серверу, который конечный пользователь вероятно есть, но это печенье не сохранить состояние аутентификации. Причины этих двух разных подходов четко объясняются в документации Сиро: Remembered vs. Authenticated.

Я не уверен, как Google реализует их решение, но я уверен, что он не основан на сеансе. Google стремится быть сервером без гражданства, когда это возможно, - поддержание миллионов сеансов для GMail (например) - технические накладные расходы, с которыми они, вероятно, не справились бы. GMail, вероятно, сохраняет состояние аутентификации в browser local storage (или какой-то пользовательский эквивалент), гарантируя, что все состояние находится в клиенте.

В любом случае, если бы мне пришлось сделать предположение, что, вероятно, как это работает:

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

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

Это поведение похоже на Shiro Remember Me ++. Они помнят, кто пользователь , не используя сеанс, но и другую информацию, которая может дать им более высокую степень уверенности в том, что пользователь действительно является тем, кого они ожидают.

Чтобы приблизиться к такому же поведению с использованием Сиро, тогда да, вам нужно будет продлить время сеанса в течение 2 недель. Разница в том, что моя догадка в решении Google не требует никакого состояния сервера вообще, в то время как сеансы.

+0

Я очень взволнован об этом. Но я не мог разобраться с Силой Помнить Меня ++.Является ли эта функция доступной в Сиро уже или мне все еще приходится вручную собирать, хешировать и делать вещи из печенья? – bertie

+1

Привет @AlbertKam это не доступно сегодня в Сиро - мы будем рады любым вкладам в проект, если вы его реализуете! –

+0

Привет @bertie в соответствии с Les Hazlewood, кажется, это аутентификация HMAC. Вы можете сделать то же самое, добавив HMACRealm в свой менеджер безопасности. –

Смежные вопросы