我正在尝试使用替代登录站点来验证对我其他正在运行的 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>
仍然进入标准核心登录屏幕。