大佬教程收集整理的这篇文章主要介绍了用于Siteminder的Spring Security Java Config,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
通常,提出问题有助于回答问题。
变更:
@H_772_7@anyrequest().hasRole("Roleemployee")
至:
@H_772_7@anyrequest().hasAuthority("Roleemployee")
固定它。
我有一个可以工作的inMemoryAuthentication配置:
@H_772_7@@Configuration @EnableWebMvcSecurity public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure( AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception { authenticationManagerBuilder // .inMemoryAuthentication() // .withUser("employee") // .password("employee") // .roles("Roleemployee") ; } @Override public void configure(WebSecurity webSecurity) throws Exception { webSecurity.ignoring().antMatchers("/resources/**"); } @Override protected void configure(httpSecurity httpSecurity) throws Exception { // @formatter:off httpSecurity .authorizerequests() .antMatchers("/login","/login.request","/logout").permitAll() .anyrequest().hasRole("Roleemployee") .and() .formLogin() .loginPage("/login.request") .loginProcessingUrl("/login") .failureUrl("/login.request?error") .permitAll() .and() .logout() .logoutUrl("/logout") .permitAll() .logoutsuccessUrl("/login.request") ; // @formatter:on } }
我现在想使用Siteminder身份验证并将其更改为:
@H_772_7@@Configuration @EnableWebMvcSecurity public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { private UserDetailsservice userDetailsservice; private PreAuthenticatedAuthenticationProvider preAuthenticatedProvider; public WebSecurityConfiguration() { super(); userDetailsservice = new CustomUserDetailsservice(); UserDetailsByNameserviceWrapper<PreAuthenticatedAuthenticationToken> wrapper = new UserDetailsByNameserviceWrapper<PreAuthenticatedAuthenticationToken>( userDetailsservicE); preAuthenticatedProvider = new PreAuthenticatedAuthenticationProvider(); preAuthenticatedProvider.setPreAuthenticatedUserDetailsservice(wrapper); } @Override protected void configure( AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception { // @formatter:off authenticationManagerBuilder // .authenticationProvider(preAuthenticatedProvider); // @formatter:on } @Override public void configure(WebSecurity webSecurity) throws Exception { webSecurity.ignoring().antMatchers("/resources/**"); } @Override protected void configure(httpSecurity httpSecurity) throws Exception { // @formatter:off requestHeaderAuthenticationFilter siteMinderFilter = new requestHeaderAuthenticationFilter(); siteMinderFilter.setAuthenticationManager(authenticationManager()); httpSecurity .addFilter(siteMinderFilter) .authorizerequests() .antMatchers("/login","/logout").permitAll() .anyrequest().hasRole("Roleemployee") .and() .formLogin() .loginPage("/login.request") .loginProcessingUrl("/login") .failureUrl("/login.request?error") .permitAll() .and() .logout() .logoutUrl("/logout") .permitAll() .logoutsuccessUrl("/login.request") ; // @formatter:on } }
现在,CustomUserDetailsService始终返回具有雇员角色的用户:
@H_772_7@public class CustomUserDetailsservice implements UserDetailsservice { @Override public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException { List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(); SimpleGrantedAuthority authority = new SimpleGrantedAuthority("Roleemployee"); authorities.add(authority); UserDetails user = new User(username,"password",authorities); return user; } }
当我对此进行测试时,将正确传入SM_USER标头,并且可以在调试器中看到正确调用了CustomUserDetailsSerice,但是对于以前在旧配置下能够成功访问的任何页面,都返回403禁止状态。
此配置有问题吗?
以上是大佬教程为你收集整理的用于Siteminder的Spring Security Java Config全部内容,希望文章能够帮你解决用于Siteminder的Spring Security Java Config所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。