CAS客户端与SpringSecurity集成

1、Spring Security测试工程搭建

(1)建立Maven项目casclient_demo3 ,引入spring依赖和spring secrity 相关依赖 ,tomcat端口设置为9003。
(2)建立web.xml ,添加过滤器等配置。
(3)创建配置文件spring-security.xml。 
(4)添加html页面。
CAS客户端与SpringSecurity集成_第1张图片

2、Spring Security CAS集成

    (1)引入依赖       

  
	   org.springframework.security  
	   spring-security-cas  
	   4.1.0.RELEASE  
     
  
        org.jasig.cas.client  
        cas-client-core  
        3.3.3  
          
              
                org.slf4j  
                log4j-over-slf4j  
              
          
 

(2)修改spring-security.xml  



	
	
	  
           
          
                   
              
          
          
    
    
  	
      
          
          
          
          
      
          
        
      
    
   
    
      
          
      
		
	
		
		
	
		
	  
          
              
                  
              
          
          
        
          
              
                  
              
          
         
            
   		 
	  
	
	
	     
              
      
          
          
              
          
          
      
      

(3)创建UserDetailsServiceImpl 

/**
 * 认证类
 */
public class UserDetailServiceImpl implements UserDetailsService {
	@Override
	public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
		//构建角色集合
		List authorities=new ArrayList();
		authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
		return new User(username, ""  , authorities);		
	}
}

这个类的主要作用是在登陆后得到用户名,可以根据用户名查询角色或执行一些逻辑。

3、获取登录名

    我们在处理后端逻辑需要获得登录名,那么如何获取单点登录的用户名呢? 其实和我们之前获得用户名的方式是完全相同的,我们下面来做个测试。

(1)web.xml 添加springmvc

    
  
  	springmvc
  	org.springframework.web.servlet.DispatcherServlet
  	
  	
  		contextConfigLocation
  		classpath:springmvc.xml
  	
  
  
  
  	springmvc
  	*.do
  

(2)创建springmvc.xml

	
	

(3)创建UserController 

@RestController
public class UserController {
	@RequestMapping("/findLoginUser")
	public void  findLoginUser(){
		String name = SecurityContextHolder.getContext().getAuthentication().getName();
		System.out.println(name);		
	}	
}

地址栏输入http://localhost:9003/findLoginUser.do即可在控制台看到输出的登录名。

4、退出登录        

修改spring-security.xml 

  
          
          
              
          
          

在页面上添加链接

退出登录

创建index2.html,将index2.html设置为可匿名访问


附录A. Spring Security 内置过滤器表

别名

Filter 类

CHANNEL_FILTER

ChannelProcessingFilter

SECURITY_CONTEXT_FILTER

SecurityContextPersistenceFilter

CONCURRENT_SESSION_FILTER

ConcurrentSessionFilter

LOGOUT_FILTER

LogoutFilter

X509_FILTER

X509AuthenticationFilter

PRE_AUTH_FILTER

AstractPreAuthenticatedProcessingFilter 的子类

CAS_FILTER

CasAuthenticationFilter

FORM_LOGIN_FILTER

UsernamePasswordAuthenticationFilter

BASIC_AUTH_FILTER

BasicAuthenticationFilter

SERVLET_API_SUPPORT_FILTER

SecurityContextHolderAwareRequestFilter

JAAS_API_SUPPORT_FILTER

JaasApiIntegrationFilter

REMEMBER_ME_FILTER

RememberMeAuthenticationFilter

ANONYMOUS_FILTER

AnonymousAuthenticationFilter

SESSION_MANAGEMENT_FILTER

SessionManagementFilter

EXCEPTION_TRANSLATION_FILTER

ExceptionTranslationFilter

FILTER_SECURITY_INTERCEPTOR

FilterSecurityInterceptor

SWITCH_USER_FILTER

SwitchUserFilter



  

















    

你可能感兴趣的:(CAS客户端与SpringSecurity集成)