Подтвердить что ты не робот

Несколько форм входа, разные администраторы проверки подлинности - последняя spring защита

У меня есть веб-приложение, защищенное Spring Security, для которого требуется две отдельные формы входа. Эти две формы входа должны быть полностью независимыми. Я имею в виду разные формы входа, разные пути URL, иметь возможность иметь другой менеджер аутентификации для каждого из них.

Я просмотрел весь Google, и есть некоторые способы сделать это, но я прочитал и вижу некоторые изменения за последние пару недель, чтобы облегчить это в последних версиях кода моментального снимка.

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

Во-вторых, поскольку эта другая ошибка показывает SEC-1847, теперь мы можем выбрать собственный менеджер проверки подлинности для каждого тэга http.

Проблема заключается в том, что я загрузил, скомпилировал и все, кроме моего xsd, не позволяет мне создавать пользовательский auth-менеджер для каждого тэга http, я также получаю ошибки всякий раз, когда я пытаюсь изменить URL-адрес обработки входа в систему или всякий раз, когда я пытаюсь использовать ключ запоминания для каждой формы входа.

Я начал делать что-то вроде этого:

<!-- Configure realm for administration users -->
<http pattern="/admin/**" auto-config="true" disable-url-rewriting="true" >
    <intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
    <form-login login-page="/adminLogin.htm" default-target-url="/" 
                login-processing-url="/loginProcessing" 
                authentication-failure-url="/adminLogin.htm?error" />
    <logout invalidate-session="true" logout-success-url="/" logout-url="/logout" />
<remember-me key="******" user-service-ref="userDetailsService" />
</http>

<!-- Configure realm for standard users -->
<http auto-config="true" disable-url-rewriting="true">
    <intercept-url pattern="/user/**" access="ROLE_USER" />
    <form-login login-page="/login.htm" default-target-url="/" 
                login-processing-url="/loginProcessing" 
                authentication-failure-url="/login.htm?error" />
    <logout invalidate-session="true" logout-success-url="/" logout-url="/logout" />
<remember-me key="******" user-service-ref="userDetailsService" />
</http>

<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userDetailsService"  >
    <password-encoder ref="passwordEncoder"/>
</authentication-provider>

<authentication-provider>
    <password-encoder ref="passwordEncoder"/>
    <user-service>
                <user name="ned" password="****" authorities="ROLE_USER" />
            <user name="tom" password="****" authorities="ROLE_ADMIN"/>
    </user-service>
</authentication-provider>
</authentication-manager>

Я использую последний снимок Spring Security 3.1.

Как я сказал, идеальным было бы иметь возможность иметь две разные формы входа полностью независимыми, используя "новый" способ, который недавно был изменен на этих ошибках.

Кто-нибудь работал с этим или имеет какую-либо идею?

Спасибо заранее.

4b9b3361

Ответ 2

Ritesh, вы правы, однако, если я пытаюсь настроить authentication-manager-ref в элементе http, возникает следующее исключение: org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'authentication-manager-ref' не разрешается появляться в безопасности элемента: http '.

В заголовке моего security.xml я использую http://www.springframework.org/schema/security/spring-security-3.1.xsd. Если я перейду к этому URL-адресу, загружаемый xsd объявит атрибут authentication-manager-ref элементу http, но xsd в spring -security-config-3.1.0.RC2.jar не делает.

Я создал проблему в springsource jira- > https://jira.springsource.org/browse/SEC-1879.

Я заменил xsd, содержащийся в spring -security-config-3.1.0.RC3.jar с правильным, и org.xml.sax.SAXParseException больше не встречается, но невозможно объявить две аутентификации -manager beans в security.xml.