Настройка входа в приложение Vaadin / Spring в JBoss AS 7 - PullRequest
0 голосов
/ 09 декабря 2011

Я пытаюсь настроить аутентификацию в моем приложении Vaadin / Spring, развернутом в JBoss AS 7, но я не могу найти никакой документации по этому вопросу. Мне удалось настроить приложение так, чтобы его мог использовать только аутентифицированный пользователь. Вот часть моего web.xml:

    <security-constraint>
    <display-name>SecureApplicationConstraint</display-name>
    <web-resource-collection>
        <web-resource-name>Vaadin application</web-resource-name>
        <description>The entire Vaadin application is protected</description>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description>Only valid users are allowed</description>
        <role-name>ROLE_ADMIN</role-name>
        <role-name>ROLE_DOCTOR</role-name>
        <role-name>ROLE_PATIENT</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>file</realm-name>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/loginError.jsp</form-error-page>
    </form-login-config>
</login-config>
<security-role>
    <description/>
    <role-name>ROLE_ADMIN</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>ROLE_DOCTOR</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>ROLE_PATIENT</role-name>
</security-role>

Теперь приложение не будет отображаться, пока пользователь не будет аутентифицирован. Я ожидал, что пользователь будет автоматически перенаправлен в форму входа. Я все еще должен настроить сервер приложений JBoss, но не могу найти как. Раньше я работал с JBoss 5, где эта конфигурация была сделана в файле login-config.xml. Кто-нибудь знает, как настроить аутентификацию REALM в JBoss 7 и заставить приложение Vaadin перенаправлять пользователя в форму входа, если он еще не аутентифицирован? Спасибо за вашу помощь,

Bye, Filip

Ответы [ 2 ]

0 голосов
/ 19 января 2012

Я обнаружил, что вход в систему на основе FORM довольно сложен в Vaadin, поскольку сервлет Vaadin по умолчанию сопоставлен с /*, что означает, что он также будет обрабатывать ваш login.jsp. Я реализовал свой логин программно с помощью LoginForm, что кажется более приятной интеграцией. Тем не менее, это не совсем то, о чем ваш вопрос ...

В JBoss AS 7 конфиги переместились на {jboss}/standalone/configuration/standalone.xml или {jboss}/standalone/configuration/domain.xml, в зависимости от ваших настроек. В большинстве случаев это standalone.xml. Вот пример моего домена безопасности, управляемого базой данных:

<subsystem xmlns="urn:jboss:domain:security:1.0">
        <security-domains>
            <security-domain name="MySecurityDomain">
                <authentication>
                    <login-module code="Database" flag="required">
                        <module-option name="dsJndiName" value="java:jboss/datasources/MyDS"/>
                        <module-option name="principalsQuery" value="SELECT PASSWORD FROM PRINCIPAL WHERE USERNAME=?"/>
                        <module-option name="rolesQuery" value="SELECT r.name, 'Roles' FROM role r, principal_role pr, principal p WHERE p.username=? AND p.user_id=pr.user_id AND pr.role_id=r.role_id"/>
                        <module-option name="hashAlgorithm" value="MD5"/>
                        <module-option name="hashEncoding" value="hex"/>
                    </login-module>
                </authentication>
            </security-domain>
        </security-domains>
    </subsystem>

Надеюсь, это поможет.

0 голосов
/ 04 января 2012

Сначала пара вопросов - (1) что происходит, когда вы пытаетесь получить доступ к ресурсу, и (2) ограничение безопасности охватывает / защищает что-либо в домене. Но ваша страница входа тоже есть. Вы бы попробовали ограничить шаблон URL чем-то, что не включало бы страницу входа, например вместо / myprotectedfolder / *?

...