我正在制作一个 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 标头找到一个用户,并将其作为 spring 用户返回。
我的问题是我无法在本地完成这项工作。需要部署它,以便我可以获取 Siteminder 标头。
是否有任何解决方法可以将模拟 Siteminder 标头中的本地测试用户的用户名提交到我的 Siteminder 过滤器?
我正在考虑将每个用户作为一个按钮的页面。单击该按钮将发送带有 SM_USER 标头的请求。
问题在于过滤器根本不允许在没有 SM_USER 标头的情况下访问该站点,因此我无法访问该页面!
我该怎么办?