为什么Fusion Middleware转发会导致Spring Security身份验证过程出现问题?

时间:2012-01-05 16:32:17

标签: spring spring-security middleware weblogic11g

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

另外需要注意的是,身份验证和应用程序在独立的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>

任何见解都会有用。我们引入了融合中间件,因为它是Oracle推荐的生产方法;我们事先遇到了证书问题。

1 个答案:

答案 0 :(得分:0)

dvuke - 使用Oracle融合中间件可以通过应用服务器处理重定向 - 因此基本上不需要在弹簧过滤器中进行更改。

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

NameVirtualHost *:80
Listen 80
<VirtualHost *:80>
    ServerName http://server-name
    Redirect permanent /contextRoot https://server-name/contextRoot
</VirtualHost> 

至少要考虑一个途径!