2

我正在尝试使用替代登录站点来验证对我其他正在运行的 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 进行身份验证并处理从此登录生成的信息。最后,只需验证此信息的一部分是否与数据库中保存的其他一些信息相关。

但是,当我开始这个时,我没有收到任何错误,什么都没有。它刚刚开始并将我留在标准登录屏幕上以获取 spring-security。我无法启动初始重定向。它甚至没有输入 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>

仍然进入标准核心登录屏幕。

4

0 回答 0