cas是Central Authentication Service的缩写,中文为中央认证服务,在这里我就不说理论了,在公司里项目研发需要cas平台,所以经过两天研究,搞了一个简化版的cas服务,有不足之处望大家见谅!!!
软件位置:软件链接:https://pan.baidu.com/s/1o9fQ6q2 密码:t354永久有效。
第一步,设置jdk的环境,一定要是jdk8,jdk7就有问题。
先解压jdk:
tar -xvf jdk-8u151-linux-x64.tar.gz
mv jdk1.8.0_151/ /usr/local/
vim /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_151 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile命令使变量生效
使用Java -version查看此时Java版本
编辑主机解析文件 vim /etc/hosts 将主机名(我的是kvm03)加入进去
将下载好的tomcat解压到制定目录(自己指定,生产环境一般是/data/soft下面的tomcat服务),因为是cas服务,所以tomcat重命令为cas-server。
tar -xvf apache-tomcat-8.0.48.tar.gz mv apache-tomcat-8.0.48 /data/soft/cas-server
解压之后启动tomcat看是否正常,有的tomcat版本不兼容会出现异常。
下载cas服务必要的压缩包:
wget https://github.com/apereo/cas-gradle-overlay-template/archive/master.zip
解压压缩包
unzip master.zip
修改gradle下载路径,否则可能报错
vim gradle/wrapper/gradle-wrapper.properties
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1-bin.zip distributionUrl=https\://downloads.gradle.org/distributions/gradle-4.5.1-bin.zip
复制CAS配置文件,注意CAS配置文件版本之间不能通用
cp -rf cas/ /data/soft/cas-server/
对cas进行打包,这个过程会很慢,建议这个过程做其他的事情
./gradlew clean build
部署cas.war,将war包放到tomcat的webapps下面,并且启动tomcat,需要查看日志是否出错。
cp cas/build/libs/cas.war /data/soft/cas-server/webapps/
以下是日志中正常出现的内容。
如果正常那么就开始访问cas,看是否成功。(默认用户名:casuser,密码:Mellon)。
登陆进去之后的样子如下:
说明:由于cas的安全性原则,我们可以打开tomcat的ssl认证,还有就是生产环境中通常是让nginx去代理所有的tomcat,所以nginx必须要有jvm模块的支持,还要有ssl的验证才能合理使用,在此为了简化,就不做nginx的ssl认证了,只作tomcat的ssl认证了。
创建tomcat的认证密钥,注意,在生产环境中,密钥和证书全是开发做好的,我们只需要将密钥导入到jdk环境中就行了,我是自己做实验,就自己创建密钥和证书了。
keytool -export -file cas.crt -alias cas -keystore cas.keystore
将生成的密钥导入jdk环境中。
keytool -importcert -alias cas -file cas.crt -keystore "${JAVA_HOME}/jre/lib/security/cacerts" -storepass changeit
配置tomcat,并打开ssl
vim conf/server.xml
修改完了之后重启tomcat,并使用https协议去访问cas,注意此时的端口和协议发生了改变,页面也有少许变化,需要注意,我的访问网址是https://192.168.20.220:8443/cas/login.
这里只演示了如何搭建cas,至于cas怎么使用并未说明,我大概把意思说明一下,cas只是一个中央服务控制系统,所有的tomcat服务最终都是被重定向到cas的某处位置,如果加上了nginx的话,那么就是所有的请求通过nginx以后被重定向到cas服务上,如果使用过的就知道,当我们以http协议去访问时,最终时转到了https协议的cas服务上。