siteminder sso和spring安全测试

时间:2013-09-18 20:55:40

标签: java filter spring-security single-sign-on siteminder

我正在创建一个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标头查找用户并将其作为弹簧用户返回。

我的问题是我不能在本地工作。它需要部署,以便我可以获得Siteminder标题。

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

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

问题是,如果没有SM_USER标题,过滤器根本不允许访问该网站,因此我无法访问该页面!

我该怎么办?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

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