Как перенаправить на точку входа в систему в другом EAR - PullRequest
2 голосов
/ 27 мая 2011

В одном из моих развернутых EAR у меня есть контекст безопасности, такой как:

<security:http auto-config="false" use-expressions="true" entry-point-ref="loginUrlAuthenticationEntryPoint">
    <security:intercept-url pattern="/login" filters="none" />
    <security:intercept-url pattern="/**" access="isAuthenticated() and permitAll" />

    <security:custom-filter position="FORM_LOGIN_FILTER" ref="ssoFilter" />
</security:http>
<bean id="loginUrlAuthenticationEntryPoint" class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">

    <property name="loginFormUrl" value="/login"/>
</bean>

Теперь во втором EAR я хочу перенаправить на страницу входа в первый. Можно ли это как-то сделать без расширения LoginUrlAuthenticationEntryPoint?

Потому что в настоящее время, если я пытаюсь использовать абсолютный URL во втором контексте безопасности EAR:

<property name="loginFormUrl" value="http://host/ear1ContextPath/login"/>

Я перенаправлен на: http://host/ear2contextPath/login.

Что неверно.

Спасибо

1 Ответ

1 голос
/ 17 июня 2011

Мне удалось сделать это, внедрив свой собственный UrlAuthenticationFaliureHandler и программно обработать абсолютные URL-адреса (просто перенаправить сервлет, а затем разорвать цепочку фильтров).

Затем я мог бы внедрить новый FailureHandler в свойпользовательский фильтр, подобный этому:

<bean id="absoluteUrlLoginFailureHandler" class="tld.company.AbsoluteUrlAuthenticationFaliureHandler">

    <property name="defaultFailureUrl" value="http://company.domain.tld/Login.html"/>
</bean>
<bean id="absoluteUrlFilter" class="tld.company.MyUserPassFilter">

    <property name="authenticationFailureHandler" ref="absoluteUrlLoginFailureHandler"/>            
</bean>

И затем я установил этот фильтр в конфигурации пространства имен:

<http auto-config="false" use-expressions="true" entry-point-ref="loginUrlAuthenticationEntryPoint">
    <security:intercept-url pattern="/**" access="isAuthenticated() and permitAll" />

    <custom-filter position="FORM_LOGIN_FILTER" ref="absoluteUrlFilter" />
</http>

Элемент <entry-point-ref>, по-видимому, обрабатывает абсолютные URL-адреса по умолчанию.

...