我正在使用siteminder进行身份验证,但目前用于开发目的我正在通过fiddler工具伪造像SM_USER这样的URL属性。我能够在我的类中获取属性,我已经实现了自定义方法以从DB获取用户权限。一切正常,最后它重定向到Spring Security Login Page.Below是我的代码片段......
<http pattern="/pages/UnAuthorized.jsf*" security="none"/>
<http pattern="/pages/Logout.jsf*" security="none"/>
<http pattern="/pages/SessionTimeout.jsf*" security="none"/>
<http auto-config="false" use-expressions="true">
<intercept-url pattern="/**" access="fullyAuthenticated" />
<custom-filter position="PRE_AUTH_FILTER" ref="siteminderFilter" />
<logout logout-url="/logout" logout-success-url="/pages/Logout.jsf" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider ref="customAuthenticationProvider" >
</authentication-provider>
</authentication-manager>
<bean id="siteminderFilter" class="org.springframework.security.web.authentication.preauth.RequestHeaderAuthenticationFilter">
<property name="principalRequestHeader" value="SM_USER"/>
<property name="authenticationManager" ref="authenticationManager" />
</bean>
<bean id="userDetailsServiceWrapper"
class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">
<property name="userDetailsService" ref="UserPermissionsProcessor"/>
</bean>
<bean id="customAuthenticationProvider" class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider">
<property name="preAuthenticatedUserDetailsService" ref="userDetailsServiceWrapper">
</property>
</bean>
我尝试使用入口点参考,如其中一篇文章中所建议的,但对我没用。
答案 0 :(得分:0)
是否正在创建身份验证对象?如果是,请在SecurityContextHolder中设置如下。
SecurityContextHolder.getContext()setAuthentication(认证);
如果验证对象不存在,则下面的行失败,
显然你将被重定向到登录页面。