cas 4.1.4单点登录实战

使用工具

maven-3.3.9

cas-4.1.4

Tomcat-7.0.57-win-x64

cas-sample-java-webapp

一、Hello cas

1、下载Tomcat,解压;修改其server.xml,增加对SSL支持(具体百度):

 

1、从https://github.com/Jasig/cas/releases 下载cas-server对应的版本;

2、解压,使用maven命令mvn package对cas进行编译打包,这里可能会出现2个问题:

  a.单元测试不通过==》尝试加上-Dmaven.test.skip=true跳过;

  b.编译到一半编译不过==》进入cas-server-core,执行命令mvn install -Dmaven.test.skip=true先将core编译为jar包后,再进行。

3、将打包好的cas-server-webapp下的war包复制到tomcat下,运行tomcat先试试吧;

4、使用账号casuser,密码Mellon登录,成功

5、从https://github.com/Jasig/java-cas-client 下载java-cas-client,如上步骤解压编译,编译后不再操作,待用。

6、从https://github.com/UniconLabs/cas-sample-java-webapp 下载cas-sample-java-webapp,如上步骤解压编译,编译后不再操作,待用。

 

二、server配置数据库连接认证

   上面我们采用的是默认配置,登录账号实际上是在cas/WEB-INF/deployerConfigContext.xml配置写死的。当然不符合我们大多数的实际使用场景。现在我们将其改为连接Mysql数据库验证。

1、回到我们刚刚maven编译的cas目录下,将cas-server-support-jdbc/target/cas-server-support-jdbc-4.1.4.jar 复制到tomcat/webapp/cas/WEB-INF/lib下,再复制mysql-connector-java-5.0.8-bin.jar到tomcat/webapp/cas/WEB-INF/lib下。当然这些你可以在cas-server-webapp下的pom.xml进行依赖添加再进行打包编译。

2、修改cas/WEB-INF/deployerConfigContext.xml,这里需要注意修改以下地方:

 
   

       
           
               
           
       


注释以上代码,增加如下代码

 
   
    
        
        
        
        
    
    
    
          
    
        
            MD5
        
    


这里我们增加了MySQL的数据连接dataSource,并编写了SQL查询用户认证信息。

修改完成,我们来测试一下能否通过MySQL进行认证。启动tomcat。

 

cas 4.1.4单点登录实战_第1张图片

 登录成功,我们已经成功和MYSQL连接成功了。

三、添加客户端

  这里我们将用到第一步里面待用的cas-sample-java-webapp。

1、将编译好的cas-sample-java-webapp/target/cas-sample-java-webapp.war部署到tomcat下;

2、找到tomcat/webapp/cas-sample-java-webapp/WEB-INF/web.xml,删除以下代码

 
   
        
            redirectAfterValidation
            true
        
        
            useSession
            true
        
        
            acceptAnyProxy
            true
        
        
            proxyReceptorUrl
            /client/proxyUrl
        
        
            proxyCallbackUrl
            https://zhuajindian.com:8443/client/proxyUrl
        


其中的多个casServerUrlPrefix、serverName、casServerLoginUrl替换成你自己的URL。

3、修改deployerConfigContext.xml,找到下面的代码

 
   
    

替换为

 
   
    
    

    
        
    

这里的serviceId就是你告诉cas服务器端,通过这个正则来判断,符合这个正则表达式的,就是我们自己的客户端。当然这里泛匹配了,你可以根据实际情况来。

4、重启tomcat,访问刚刚填写在serverName处的URL试试


cas 4.1.4单点登录实战_第2张图片

可以看到,我们已经能够成功获取到Authenticated UserId,也就是登录的用户名。这样,我们的简单demo就完成了。

四、自定义登录后的可传递字段,方便客户端读取

  在我们的应用场景中,客户端需要的参数不仅仅是用户名。还需要诸如userid等各类信息,那么,接下来我们就来配置获取自定义字段。

1、找到cas/WEB-INF/deployerConfigContext.xml,注释以下代码:



    
        
        
        
        
            memberOf
            
                faculty
                staff
                org
            
        
    

替换为:

 
   

        
        
            
                
                    
                
            
            
                
                    
                    
                    
                    
                
            
    

其中的sql只需要写前半部分,如示例,entry的key代表上面sql查询的字段,value代表服务端传给客户端的参数名,客户端可以通过value取出对应的值。

2、修改cas/WEB-INF/view/jsp/protocol/2.0/casServiceValidationSuccess.jsp,增加下面这段


    
        ${fn:escapeXml(principal.id)}
        
        
            
                
                    ${fn:escapeXml(attr.value)}
                
            
        
        
        
            ${pgtIou}
        
        
            
                
                    ${fn:escapeXml(proxy.principal.id)}
                
            
        
    


3、重启tomcat,登录看效果:

cas 4.1.4单点登录实战_第3张图片

上面配置的4个参数这里显示了3个,原来mobile字段是因为没有值,所以他默认就不传递了。


五、单点退出

单点登出在应用中是必不可少的,只需要在client的web.xml顶部加上以下代码即可:

    
    
        CASSingle Sign OutFilter
        org.jasig.cas.client.session.SingleSignOutFilter
        
            casServerUrlPrefix
            https://zhuajindian.com:8443/cas
        
    
    
        CASSingle Sign OutFilter
        /*
    
	
    
        org.jasig.cas.client.session.SingleSignOutHttpSessionListener
    

注意单点登出在测试时,访问https://zhuajindian.com:8443/cas/logout登出后直接刷新client端,是没有退出的,需要在客户端有其他请求后才会通知退出,这个不知道是什么原因引起的。盼交流回复


本文搭建的CAS4.1.4server+client实例下载地址:http://download.csdn.net/detail/chenhai201/9425625


你可能感兴趣的:(CAS,SSO)