Здравствуйте, Blazkowicz, Вы писали:
А>>Для этого я написал LoginModule который содержит всю логику аутентификации.
А>>Сам по себе он работает. Если посылать запрос j_security_check?j_username=username&j_password=passwd то после успешной аутентификации в сессии появляется пользователь username, имя котрого я могу получить через req.getRemoteUser().
B>Вот этот момент не очень понятен. Для j_security_check (контейнероной аутентификации) LoginModule вроде как не нужен. Как ты их связал?
Если по порядку:
приложение А использует свой сервлет для обработки запросов и содержит свою внутреннюю аутентификацию и авторизацию.
При этом переделываются некоторые модули существующего проиложения с использованим JSF/Spring/Hibernate и вся аутуентификация переностися на уровень JAAS.
web.xml содержит:
<security-constraint>
<display-name>SecurityConstraint</display-name>
<web-resource-collection>
<web-resource-name>WRCollection</web-resource-name>
<url-pattern>/ur/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.faces</form-login-page>
<form-error-page>/login.faces</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
а в jboss-web.xml
<jboss-web>
<security-domain flushOnSessionInvalidation="true">java:/jaas/MyLoginModule</security-domain>
</jboss-web>
Логин модуль правильно зарегистрирован в login-config в JBoss.
И все работает, если использовать login.jsp с фромой, посылающей запрос j_security_check.
Но у меня уже есть в старом приложении форма для ввода пароля и я бы хотел провести дополнительную аутентификацию вручную. Да это и получается, но только в LoginContext-е, а мне надо, что бы пользователь с его ролями был зарегистирован в сессии.
B>Вот тут-то и начинается самое интересное. Вышеописаная задача она контейнеро-зависимая. Смотрел login-config.xml в JBoss? Там тебе и нужно прописать свои классы. Скорее всего свою реализацию LoginModule.