我正在创建一个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>
我的SSOUserDetailsService根据SM_USERID标头查找用户并将其作为弹簧用户返回。
我的问题是我不能在本地工作。它需要部署,以便我可以获得Siteminder标题。
是否有任何解决方法可以将模拟Siteminder标头中的本地测试用户的用户名提交到我的Siteminder过滤器?
我在考虑将每个用户作为按钮的页面。单击该按钮将发送带有SM_USER标头的请求。
问题是,如果没有SM_USER标题,过滤器根本不允许访问该网站,因此我无法访问该页面!
我该怎么办?
答案 0 :(得分:0)
创建一个过滤器,在头文件中注入属性SM_USERID,并将此fitler放在web.xml中的FilterChainProxy声明之前。
答案 1 :(得分:-1)
尝试使用以下值更新主机文件 http://www.xyz.com 127.0.0.1:8080/yourappName