Re[2]: JAAS. Как поместить remoteUser в сессию?
От: dkud  
Дата: 07.06.06 14:21
Оценка:
Здравствуйте, 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.