cas配置多个QueryDatabaseAuthenticationHandler和多个datasource

一、环境说明

1)        Tomcat7.0.6

2)        Jdk7

3)        CAS Service版本 cas-server-4.0 (这个版本和原来版本有很大区别)

4)        CAS Client 版本 cas-client-core-3.3

 

二、 配置客户端

1.        项目中引入jar包: cas-client-core-3.3.3.jar

2.        修改Web.xml配置(项目的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:8080/cas
           
       
       
           serverName
           http://localhost:8080
       
    
    
       CASFilter
       /*
    
 
    
    
       CAS Validation Filter
       
           org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
       
           casServerUrlPrefix
           http://localhost:8080/cas
       
       
           serverName
           http://localhost:8080
       
    
    
       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
       /*
    
 
    


3.  项目登录页面配置,加入如下代码

<%
AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
Map attributes = principal.getAttributes();
%>


4.  js控制自动登录(这里根据自己项目的配置)

    

  $(function(){
         var name='<%=attributes.get("username")%>';
          var pwd='<%=attributes.get("password")%>';
          if(name!=null && pwd!=null)
          {
             $('body').html("正在跳转,请稍后...");
            
                 $.ajax({
                 type:"post",
                 dataType:"html",
                 url:"user!login?userid="+name+"&password="+pwd,
                 success:function(data){
                   if(data=="N")
                   {
                     alert("用户名或密码错误!");
                       
                   }else if(data=="P"){
                   
                  alert("您没有登录权限!");
                   }else{                
                      window.location.href="index.jsp";
                   }
                 }
              });
          }
      });

三 配置服务端(CAS Server)

 

1.        在tomcat的lib目录下或者是cas项目的lib目录下引入jar包:

cas-server-core-4.0.0.jar

cas-server-support-jdbc-4.0.0.jar

commons-dbcp.jar//看自己数据源定义,本demo采用的是dbcp

mysql-connector-java-5.1.7-bin.jar

等jar

2.        CAS服务端默认是以https://...方式认证的,需要安装证书,还需要配置域名等很麻烦,所以更改其方式以http访问,修改如下:

1)        WEB-INF/deployerConfigContext.xml

WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml

WEB-INF\spring-configuration\warnCookieGenerator.xm

2)        WEB-INF/deployerConfigContext.xml

< bean class = "org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref = "httpClient" />
 增加参数 p:requireSecure="false" ,是否需要安全验证,即 HTTPS , false 为不采用 如下:

 < bean class = "org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref = "httpClient" p:requireSecure= "false" />


3)      WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml

修改 p:cookieSecure="true" 为 p:cookieSecure=" false " , 即不需要安全 cookie

< bean id = "ticketGrantingTicketCookieGenerator" class = "org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
       p:cookieSecure = " false "
       p:cookieMaxAge = "-1"
       p:cookieName = "CASTGC"
       p:cookiePath = "/cas" />

4)        WEB-INF\spring-configuration\warnCookieGenerator.xml

修改 p:cookieSecure="true" 为 p:cookieSecure=" false " , 即不需要安全 cookie 结果如下:

 

< bean id = "warnCookieGenerator" class = "org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
       p:cookieSecure = " false "
       p:cookieMaxAge = "-1"
       p:cookieName = "CASPRIVACY"
       p:cookiePath = "/cas" />

3.      配置cas\WEB-INF\ deployerConfigContext.xml文件,核心配置都在这里,主要包括配置数据源,验证方式及客户端调用用户详细信息(默认只能取得用户名)等。(这里配置的是多个数据库(2个),根据项目情况可自行配置)

1)      权限管理配置


        
            
                
                    
                    
                    
            
        


2)      定义验证方式(jdbc)


          
          
    
   
    
          
          
    


3)      定义关联属性


        
    
   
    
        
    


4)      定义属性详细信息


              
              
             
                   
              
                     
                         
                            
                            
                     
              
              
                     
                         
                            
                            
                     
              
       
 

              
              
             
                   
              
                     
                         
                            
                            
                     
              
              
                     
                         
                            
                            
                     
              
       


5)      定义数据源


                   
                           com.mysql.jdbc.Driver
                   
                   
                            jdbc:mysql://localhost:3306/samsungdb
                   
                   
                            admin
                   
                   
                            admin
                   
    
   
    
                   
                           com.mysql.jdbc.Driver
                   
                   
                            jdbc:mysql://localhost:3306/gdyerpdb
                   
                   
                            admin
                   
                   
                            admin
                   
    


4.      安全退出配置

1)      配置项目的web.xml增加过滤器,前面已配置,这里就不在赘述。

2)      默认的是跳到指定测试页面,但实际中应该是跳到登陆页面,需要修改cas\WEB-INF\ cas-servlet.xml文件,需要把followServiceRedirects属性设为true


3)      页面业务退出配置:如果你业务系统的URL:window.location.href=”user!logout.action”

那么退出的路径就是:window.location.href=”http://localhost:8080/cas/logout?service=http://localhost:8080/项目名/user!logout.action”

四、参考网站

1.      http://blog.csdn.net/small_love/article/details/6664831

2.      http://www.coin163.com/java/docs/201305/d_2795029003.html

3.      http://blog.csdn.net/zkshun12/article/details/16901555

4.      http://jcbay.iteye.com/blog/860018

 

附注:完整配置







	
	
		
			
				
				
				
				
			
		

		

		
		
			
		
	

	
	

	
	
		
		
	

	
		
		
	

	
	

	
	
		
	

	
		
	

	
	

	
		
		
		
	

	
	

	
		
		
		
	

	

	

	
		
		
		
	

	
		
			com.mysql.jdbc.Driver
		
		
			jdbc:mysql://localhost:3306/samsungdb
		
		
			admin
		
		
			admin
		
	

	
		
			com.mysql.jdbc.Driver
		
		
			jdbc:mysql://localhost:3306/gdyerpdb
		
		
			admin
		
		
			admin
		
	

	
		
		

		
		
			
				
				
				
			
		
		
			
				
				
				
			
		
	

	
		
		

		
		
			
				
				
				
			
		
		
			
				
				
				
			
		
	



 
 

你可能感兴趣的:(CAS)