0

我正在制作一个 Java 门户应用程序,该应用程序将通过 Siteminder 单点登录进行访问。

我的应用程序当前使用以下 bean 拒绝任何没有 SM_USERID 的请求:

<bean id="siteminderFilter" class="org.springframework.security.web.authentication.preauth.RequestHeaderAuthenticationFilter">
    <property name="principalRequestHeader" value="SM_USERID"/>
    <property name="authenticationManager" ref="authenticationManager" />
</bean>

<bean id="preauthAuthProvider" class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider">
    <property name="preAuthenticatedUserDetailsService">
        <bean id="userDetailsServiceWrapper"  class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">
            <property name="userDetailsService" ref="ssoUserDetailsService"/>
        </bean>
    </property>
</bean>

我的 SSOUserDetailsS​​ervice 根据 SM_USERID 标头找到一个用户,并将其作为 spring 用户返回。

我的问题是我无法在本地完成这项工作。需要部署它,以便我可以获取 Siteminder 标头。

是否有任何解决方法可以将模拟 Siteminder 标头中的本地测试用户的用户名提交到我的 Siteminder 过滤器?

我正在考虑将每个用户作为一个按钮的页面。单击该按钮将发送带有 SM_USER 标头的请求。

问题在于过滤器根本不允许在没有 SM_USER 标头的情况下访问该站点,因此我无法访问该页面!

我该怎么办?

4

2 回答 2

0

创建一个过滤器,在标头中注入属性 SM_USERID,并将此过滤器放在 web.xml 中的 FilterChainProxy 声明之前。

于 2014-01-16T08:12:15.773 回答
-1

尝试使用以下值更新主机文件 http://www.xyz.com 127.0.0.1:8080/yourappName

于 2013-09-18T21:16:55.387 回答