搭建cas服务器

公司有几个系统想做SSO,然后开始研究cas。系统是Centos7

搭建CAS服务器#

cas的版本比较多,先在网上搜了一下各种教程配置经验。本来想搭建最新的CAS版本,然而为了快速部署,选择了网上教程比较详细的cas-4.0.0版本。

  1. 安装包和环境依赖
    cas-server是依赖jdk,tomcat,spring等,jdk和tomcat装最新版本就可以了,cas-server这里选了4.0.0.因为版本不同配置还有是区别的,所以这里强调一下版本。因为没玩过JAVA,spring framework我没装,可能是tomcat自带的。。新版本的cas-server好像是通过maven来装,具体怎么装我不知道。。但是有点想研究,看以后会不会填坑。
    1.1 jdk
    yum install 安装貌似默认是1.7,然后我选了1.8
    1.2 tomcat
    yum install 安装最新版
    1.3 spring framework
    我没装。。然后没啥影响。。
    1.3 cas-server-4.0.0
    在cas官网下载的,速度超级慢。不知道有没有镜像。下载完成然后解压。进入文件夹 找到cas-server-4.0.0/modules/cas-server-webapp-4.0.0.war这个 war 文件,拷贝到tomcat的webapps目录下。默认目录在/usr/local/tomcat/webapps/。以前没玩过JAVA不知道,原来war文件拷贝过来就会马上自动解压成文件夹,然后war移动或删除那个同名文件压也会被删!modules 目录下的其他jar是可能需要的依赖包,放到webapps下面自动生成的文件夹里的WEB-INF/lib/下,比如我这里叫cas-server-webapp-4.0.0/WEB-INF/lib/。然后启动tomcat,在浏览器打开。
    tomcat的启动和关闭在tomcat目录下的bin/目录的shutdown.shstartup.sh:

    搭建cas服务器_第1张图片
    tomcat重启

    (吐槽下tomcat的重启慢到令人发指,推荐一个解决办法)

  2. 导入证书OR去除https限制
    2.1 生成ssl证书
    cas默认使用https,需要ssl证书。我跟着步骤生成了一个crt证书,然后就不知道干嘛了。所以还是老老实实用http跑通再说。
    2.2 去除https限制
    主要有3个地方需要修改:
    2.21 WEB-INF/deployerConfigContext.xml 找到 proxyAuthenticationHandle 添加属性 p:requireSecure="false".

    
2.22 `WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml` 将 `p:cookieSecure="true"` 改为 `p:cookieSecure="false"`
    
2.23 `WEB-INF/spring-configuration/warnCookieGenerator.xml` 将 `p:cookieSecure="true"` 改为 `p:cookieSecure="false"`。 同上
  1. 验证方式
    比较好奇应该90%都会使用数据库的用户和密码进行认证吧,为啥cas的默认认证方式不设置成数据库方式呢。难道是为了给用户自己选择数据库的自由?这里主要是3个XML属性配置
    3.0 依赖包
    +. mysql-connector-java-5.1.42.jar 跟版本关系不大
    +. c3p0-0.9.1.2.jar 这个很关键
    +. cas-server-support-jdbc-4.0.0.jar 注意跟cas-server版本一致
    3.1 数据源(数据库配置)
    
网上配置教程大都是直接把配置写到这里,我这里建议用官方文档的变量方式,一来避免`jdbcUrl`的特殊字符编码问题,而来方便修改配置。这些变量都可以在同目录下的 `cas.properties`中配置 
    # == Basic database connection pool configuration ==
    database.driverClass=com.mysql.jdbc.Driver
    database.url=jdbc:mysql://localhost:3306/cas_test?useUnicode=true&characterEncoding=UTF8
    database.user=root
    database.password=root

3.2 加密算法

    
系统自带MD5和SHA1加密算法,可以自定义,然而因为我没搞过JAVA所以就停留在这一步,没有深入研究。

3.3 认证方式

    
可以看出上面2个配置项都是给这个做铺垫。这个SQL语句根据自己的数据库进行查询。网上教程有提到还有一个地方要修改
        
        
        
个人理解这里不一定要改成这样,如果保留原来的`primaryAuthenticationHandler`那么需要把原来的`

我在这里配置了无数遍,然后各种错误。而且我又不知道怎么查看java/tomcat错误,最后莫名其妙成功了。总结一下可能出错的地方:
dataSource 中的 class , 网上有的给出来的不一样,建议以官网为主
jdbcUrl 可能有特殊字符编码问题,建议写到 cas.properties
依赖包不对

  1. 返回用户信息
    4.1 从数据库查询更多信息
    
    
        
        
        
        
            
                
                
            
        
        
            
                
                
                
                
                
                
            
        
        
    
4.2 配置返回字段
    
        
        
        
              
                  uid
                  username
                  password
                  email
                  cname
              
          
        
    ...

到这里cas服务端的配置基本完成了。good luck。

你可能感兴趣的:(搭建cas服务器)