Вход в JSP с декларативной безопасностью. Как происходит настоящая аутентификация? - PullRequest
4 голосов
/ 26 октября 2010

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

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

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

Ответы [ 2 ]

4 голосов
/ 27 октября 2010

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

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

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

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

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

3 голосов
/ 26 мая 2013

Аутентификация фактическая выполняется двумя способами:

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

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

Подробнее см. Реализация аутентификации контейнера в Java EE с JASPIC .

...