2010-10-26 1 views
4

Я был немного озадачен этим, поскольку я не видел много примеров, которые дали мне полную картину. Лучшее объяснение, которое я нашел до сих пор, - this.JSP-логин с декларативной защитой - как происходит фактическая аутентификация?

Определяя роль безопасности в web.xml, например, «admin», и имея мою регистрационную форму со всеми необходимыми полями (например, j_security_check как действие и поля j_username, j_password), как/проверка подлинности происходит?

Я планирую использовать пользовательскую аутентификацию, используя имя пользователя/пароли (хэши), хранящиеся в базе данных. Когда пользователь отправляет форму, как заставить Java EE Web Container вызывать мой метод sevlet/bean, выполните фактическую проверку подлинности? Я не заметил места для добавления привязки к моему коду в web.xml, который бы выполнял фактическую аутентификацию.

ответ

4

Определяя роль безопасности в web.xml, такие как «администратор», например, и с моей регистрационной формой со всеми необходимыми полями (т.е. j_security_check как действие, и поля j_username, j_password), как/где делает возникает фактическая проверка подлинности?

В реализации сервлета используется сервлетконтейнер. Например, в Tomcat это делается классом AuthenticatorBase (исходный код here).

Я планирую использовать пользовательскую аутентификацию, используя имя пользователя/пароли (хеши), хранящиеся в базе данных. Когда пользователь отправляет форму, как заставить Java EE Web Container вызывать мой метод sevlet/bean, выполните фактическую проверку подлинности? Я не заметил места для добавления привязки к моему коду в web.xml, который бы выполнял фактическую аутентификацию.

Если вы хотите использовать аутентификацию, управляемую контейнером, но вместо этого хотите проверить вход в систему с базой данных, вам необходимо соответствующим образом настроить так называемое «царство». Неясно, какой сервлетконтейнер вы используете, но, например, в Tomcat, документация доступна здесь: Tomcat 6.0 Realm HOW-TO.

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

3

Фактическая аутентификация делает с помощью двух способов:

  1. через сервер несвободного способ, например, *LoginModules в JBoss, или упомянутый Tomcat один BalusC. Они различны для каждого Сервера.
  2. Via JASPIC, который был введен в Java EE 6.

JASPIC довольно много стандартизировала собственнические методы, но это довольно низкого уровня API и, к сожалению доступен только для полного профиля Java EE 6 и 7 реализаций ,

Для получения более подробной информации см. Implementing container authentication in Java EE with JASPIC.