为什么Fusion中间件转发会导致我的Spring安全认证过程出现问题?

为什么Fusion中间件转发会导致我的Spring安全认证过程出现问题?,spring,spring-security,middleware,weblogic11g,Spring,Spring Security,Middleware,Weblogic11g,我们已经设置了Fusion中间件来处理我们的证书。它在端口443上配置,并在处理认证过程后将其请求转发到端口8001上设置的weblogic 11g实例。该实例处理身份验证并通过中间件返回响应。我们使用的是Spring2.5.6和SpringSecurity 2.0.4。这是一个基于flex的web应用程序。使用firebug/firefox,我能够验证服务器是否正确处理身份验证请求,并尝试返回loginsAccess.htm(通过spring安全配置文件中的org.springframewor

我们已经设置了Fusion中间件来处理我们的证书。它在端口443上配置,并在处理认证过程后将其请求转发到端口8001上设置的weblogic 11g实例。该实例处理身份验证并通过中间件返回响应。我们使用的是Spring2.5.6和SpringSecurity 2.0.4。这是一个基于flex的web应用程序。使用firebug/firefox,我能够验证服务器是否正确处理身份验证请求,并尝试返回loginsAccess.htm(通过spring安全配置文件中的
org.springframework.security.ui.webapp.AuthenticationProcessingFilter进行配置),但我可以看到它是一个302转发,这是一个错误,firebug的状态为“已中止”

还要注意的是,身份验证和应用程序在weblogic的独立实例上运行良好;当我们在web应用程序和客户端之间引入融合中间件时,我们开始遇到身份验证问题

以下是我的AuthenticationProcessingFilter配置条目的一个片段:

<bean id="authenticationProcessingFilter" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter">
        <property name="authenticationManager" ref="authenticationManager"/>
        <property name="authenticationFailureUrl" value="/loginFailure.htm"/>
        <property name="defaultTargetUrl" value="/loginSuccess.htm"/>
        <property name="filterProcessesUrl" value="/login.htm"/>
        <property name="rememberMeServices" ref="rememberMeServices"/>
        <property name="alwaysUseDefaultTargetUrl" value="true" />
        <property name="usernameParameter" value="username"/>
        <property name="passwordParameter" value="password"/>
</bean>


任何见解都是有用的。我们引入了Fusion中间件,因为它是Oracle推荐的生产方法;我们之前的证书有问题。

dvuke-使用Oracle Fusion中间件可以通过应用服务器处理重定向-因此基本上不需要在spring筛选器中进行更改

这种在httpd.conf文件中使用永久重定向属性的方法可能会解决您描述的问题。因此,代码中的任何重定向都可能被强制始终通过https提供

NameVirtualHost *:80
Listen 80
<VirtualHost *:80>
    ServerName http://server-name
    Redirect permanent /contextRoot https://server-name/contextRoot
</VirtualHost> 
NameVirtualHost*:80
听80
服务器名http://server-name
重定向永久/上下文根目录https://server-name/contextRoot

至少有一条路可以看

仅供参考-我开始有可能缩小问题范围。当点击url时,我们的登录当前使用https://[domain]/[context]/login.htm,但通过身份验证进行的转发将返回http://[domain]/[context]/loginsucess.htm而不是https。