Автоматический вход в приложение JSF при повторном посещении после однократного входа - PullRequest
6 голосов
/ 21 марта 2012

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

Как все это происходит на сервере? Как включить такой механизм в моем приложении JSF 2.1?


Использование JSF 2.1 на сервере Tomcat7

Ответы [ 2 ]

8 голосов
/ 21 марта 2012

Это в основном делается с помощью долгоживущего печенья.Эта функциональность не предоставляется API-интерфейсом JSF, поскольку это просто основанная на компонентах инфраструктура MVC.Эта функциональность также не предоставляется стандартным API Java EE.Некоторые платформы аутентификации, такие как Spring Security и Apache Shiro предлагают эту функциональность.

Если вам нужно реализовать это с использованием "простой" Java EE / JSF, тонеобходимо создать долгоживущий файл cookie самостоятельно во время входа в систему по ExternalContext#addResponseCookie().Значение cookie должно быть длинным, уникальным, автоматически сгенерированным и трудно угадываемым значением (например, java.util.UUID), которое вы также сохраняете в БД, связанной с идентификатором пользователя.Затем вы можете использовать простой фильтр сервлетов , чтобы проверить наличие cookie по HttpServletRequest#getCookies(), когда вошедший в систему пользователь будет подтвержден как отсутствующий.Если файл cookie найден и он действителен, выполните автоматический вход пользователя в систему.

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

См. также:

1 голос
/ 21 марта 2012

Если вы используете Spring Security или Apache Shiro, они оба поддерживают это с помощью соответствующего фильтра. В основе Spring Security лежит постоянный запас токенов запомнить меня, и Широ, я думаю, подписывает хэш-значение.

Вот руководство по пружине: http://static.springsource.org/spring-security/site/docs/3.0.x/reference/remember-me.html

Вот справочник Широ: http://shiro.apache.org/java-authentication-guide.html

Если вы используете Java EE Security (пожалуйста, скажите, что это не так), вы ограничены тем, что может поддерживать ваш контейнер, если вы не хотите создавать фильтр входа пользователя. Фильтр клиента может подписать куки-файл с MAC-кодом и проверить его по базе данных. Я не верю, что в Tomcat 7 это встроено, вам, вероятно, нужно проверить GlassFish (который поддерживает SSO, я не думаю, что он поддерживает помните меня).

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