品优购项目记录day15 (单点登录CAS)

文章目录

  • 单点登录系统CAS入门
  • CAS客户端
  • CAS服务端数据源设置
  • CAS服务端界面改造
  • CAS客户端与SpringSecurity集成

单点登录系统CAS入门

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
品优购项目记录day15 (单点登录CAS)_第1张图片
CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。
部署方法:

CAS本质就是一个war包:cas-server-webapp-4.0.0.war,将其改名为cas.war放入tomcat目录下的webapps下。启动tomcat自动解压war包。浏览器输入http://localhost:8080/cas/login ,可看到登录页面。
品优购项目记录day15 (单点登录CAS)_第2张图片
其固定的用户名和密码 为casuser:Mellon
通过配置文件的修改可以配置以下信息:

  • 端口修改
  • 去除https认证
  • 设置COOKIE的最大生命周期

CAS客户端

step1:搭建工程引入依赖


		  
		  
		    org.jasig.cas.client  
		    cas-client-core  
		    3.3.3  
		  		
		
			javax.servlet
			servlet-api
			2.5  
			provided
		
	  
    
	  
	        
	          org.apache.maven.plugins  
	          maven-compiler-plugin  
	          2.3.2  
	            
	              1.7  
	              1.7  
	            
	        
	      
				org.apache.tomcat.maven
				tomcat7-maven-plugin
				
					
					9001
					
					/
				
	  	  
	    
    

step2:添加web.xml


	
      
      
     org.jasig.cas.client.session.SingleSignOutHttpSessionListener  
      
      
      
        CAS Single Sign Out Filter  
       org.jasig.cas.client.session.SingleSignOutFilter  
      
      
        CAS Single Sign Out Filter  
        /*  
      
      
      
        CASFilter       org.jasig.cas.client.authentication.AuthenticationFilter  
          
            casServerLoginUrl  
            http://localhost:9100/cas/login  
              
          
          
            serverName  
            http://localhost:9001
          
      
      
        CASFilter  
        /*  
      
      
      
        CAS Validation Filter  
             org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter  
          
            casServerUrlPrefix  
            http://localhost:9100/cas  
          
          
            serverName  
            http://localhost:9001
          
      
      
        CAS Validation Filter  
        /*  
      
      
      
        CAS HttpServletRequest Wrapper Filter  
          
            org.jasig.cas.client.util.HttpServletRequestWrapperFilter  
      
      
        CAS HttpServletRequest Wrapper Filter  
        /*  
      
      
      
        CAS Assertion Thread Local Filter       org.jasig.cas.client.util.AssertionThreadLocalFilter  
      
      
        CAS Assertion Thread Local Filter  
        /*  
      


step3:地址栏输入http://localhost:9001/ ,会跳转到CAS登录页。
step4:地址栏输入 http://localhost:9100/cas/logout 即可看到退出后的提示页面

CAS服务端数据源设置

修改cas服务端中web-inf下deployerConfigContext.xml
将以下三个jar包放入webapps\cas\WEB-INF\lib下
在这里插入图片描述
ps:必须加入mchange-commons-0.2.jar包,否则c3p0包无法运行。

CAS服务端界面改造

  1. 将品优购的登陆页login.html拷贝到cas系统下WEB-INF\view\jsp\default\ui 目录下
  2. 将css、js等文件夹拷贝到cas目录下
  3. 将原来的casLoginView.jsp 改名(可以为之后的修改操作做参照),将login.html改名为casLoginView.jsp

CAS客户端与SpringSecurity集成

step1: 引入依赖

  
	   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  
              
          
 

step2:修改spring-security.xml



	
	
	  
           
          
                   
              
          
          
    
    
  	
      
          
          
          
          
      
          
        
      
    
   
    
      
          
      
		
	
		
		
	
		
	  
          
              
                  
              
          
          
        
          
              
                  
              
          
         
            
   		 
	  
	
	
	     
              
      
          
          
              
          
          
      
      

step3:创建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);		
	}
}

获取登录名

String name = SecurityContextHolder.getContext().getAuthentication().getName();

退出登录:修改spring-security.xml

  

在页面上添加链接即可:

退出登录

你可能感兴趣的:(项目记录)