Spring安全入口点和AbstractAuthenticationProcessingFilter

时间:2012-10-09 07:50:04

标签: spring-security

我正在尝试使用其他登录网站来验证对其他正在运行的spring-security的访问权限,从而创建单一登录。

但是,在连接到我的应用程序时,我无法最初重定向到此备用站点。

我的applicationContext.xml指定如下:

<http entry-point-ref="testProcessingFilterEntryPoint">
    <intercept-url pattern="/css/**" filters="none" />
    <intercept-url pattern="/login" filters="none" />
    <intercept-url pattern="/images/**" filters="none" />
    <intercept-url pattern="/favicon.ico" filters="none" />
    <intercept-url pattern="/**" access="ROLE_USER" />
    <form-login login-page="/login"
                authentication-failure-url="/login?login_error=1"
                default-target-url="/home"
                always-use-default-target="true" />
    <logout/>
</http>

<beans:bean id="testProcessingFilterEntryPoint" class="com.test.TESTAuthFilterEntryPoint">
    <beans:property name="loginUrl" value="https://example/login.cgi"/>
    <beans:property name="startUrl" value="/login.jsp"/>
    <beans:property name="otherParams" ref="otherParams"/>
</beans:bean>

<beans:bean id="otherParams" class="com.test.OtherParams">
    <beans:property name="pemFile" value="/data/test.pem"/>
    <beans:property name="cookieName" value="testCookie"/>
</beans:bean>

<beans:bean id="authenticationProcessingFilter" class="com.test.TESTAuthenticationProcessingFilter">
    <beans:constructor-arg index="0" type="java.lang.String" value="" /> 
    <beans:property name="authenticationManager" ref="authenticationManager"/>
    <beans:property name="authenticationFailureUrl" value="/login.jsp?login_error=1"/>
    <beans:property name="defaultTargetUrl" value="/"/>
    <beans:property name="filterProcessesUrl" value="/j_spring_security_check"/>
    <beans:property name="otherParams" ref="otherParams"/>
</beans:bean>

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

基本上我的authenticationProcessingFilter使用定义为:

的类
public class TESTAuthenticationProcessingFilter extends AbstractAuthenticationProcessingFilter  {

我的testProcessingFilterEntryPoint使用定义为:

的类
public class TESTAuthFilterEntryPoint implements AuthenticationEntryPoint, InitializingBean {

假设要发生的是我应该被重定向到外部站点,通过查看生成的cookie来获得身份验证并处理从此登录生成的信息。最后,只需验证此信息的一部分与数据库中保存的其他信息相关。

但是,当我开始这个时,我没有错误,没有任何错误。它刚刚开始,让我在弹簧安全的标准登录屏幕上。我无法获得初始重定向。它甚至没有在TESTAuthFilterEntryPoint中输入方法

@Override
commence(HttpServletRequest servletRequest, HttpServletResponse....)

就像一个侧面评论一样,它甚至没有触及任何差异,就像一个简约的情况,例如:

<http>
    <http-basic/>
    <intercept-url pattern="/**" access="ROLE_ADMIN" />
</http>
<authentication-manager>
    <authentication-provider>
        <user-service>
            <user name="admin" password="kass" authorities="ROLE_ADMIN" />
        </user-service>
    </authentication-provider>
</authentication-manager>

仍然进入标准的核心登录界面。

0 个答案:

没有答案