Apereo CAS 5.3 项目源码地址:https://github.com/apereo
CAS 系列详解:https://blog.csdn.net/makyan/column/info/36060
一、Apereo CAS 5.3服务端Server环境搭建
1.1. 本地配置tomcat通过https访问
1. 下载
在这里把zip文件下载下来:我下载的版本是5.3.9)
https://github.com/apereo/cas-overlay-template
2. 编译
解压zip,命令行进去,执行mvn clean package
结束之后会出现 target 文件夹,里面有war包啥的,把war包解压,比如我们把解压后的文件夹命名为 cas_war 吧,后文提到 cas_war 就代表是这个文件夹
3. 本地配置tomcat通过https访问
注意: 本机先安装好jdk,并配置好环境变量
(1) 生成证书
#linux
sudo keytool -genkeypair -alias "futurecloud" -keyalg "RSA" -keystore "/etc/cas/futurecloud.keystore"
#windows
keytool -genkeypair -alias "futurecloud" -keyalg "RSA" -keystore "E:\mycas\futurecloud.keystore"
按照以下输入:
密钥库口令: 123456(这个密码非常重要)
名字与姓氏: www.futurecloud.com(域名很重要,建议自己编个域名,在host文件里写好映射)
组织单位名称: futurecloud(随便填)
组织名称: futurecloud(随便填)
城市: beijing(随便填)
省市自治区: hebei(随便填)
国家地区代码: zh(随便填)
现在E:\mycas\futurecloud.keystore这个文件生成了
(2) 导出证书
#linux
sudo keytool -export -file /etc/cas/futurecloud.crt -keystore /etc/cas/futurecloud.keystore -alias futurecloud
#windows
keytool -export -file E:\mycas\futurecloud.crt -keystore E:\mycas\futurecloud.keystore -alias futurecloud
用刚刚的futurecloud.keystore文件生成了futurecloud.crt文件
注意:这里输入的是上面设置的密码:123456
(3) 导入证书到本地JDK(客户端认证)
#linux
sudo keytool -import -keystore /usr/java/jdk1.8.0_91/jre/lib/security/cacerts -file /etc/cas/futurecloud.crt -alias futurecloud
#windows
keytool -import -file E:\mycas\futurecloud.crt -alias futurecloud -keystore D:\workprograms\java\jdk1.8.0_91\jre\lib\security\cacerts -storepass changeit
注意:输入密码的时候输入changeit , java默认的
要删除也很容易:
keytool -delete -alias futurecloud -keystore D:\workprograms\java\jdk1.8.0_91\jre\lib\security\cacerts
(4) 配置tomcat SSL
修改tomcat的配置文件server.xml
删掉:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
添加:
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="E:\mycas\futurecloud.keystore" keystorePass="123456"
clientAuth="false" sslProtocol="TLS"/>
(5) 把crt文件导入浏览器,我用的是chrome
!
把生成的crt文件导进去了。
(6) 检查配置
把 cas_war 放到tomcat的webapp下面改名为cas,启动tomcat,浏览器访问
https://www.futurecloud.com:8443/cas/login,
如果提示签名不正确之类的就点击高级/详细信息,继续访问。
cas-overlay项目的配置文件bootstrap.properties中有默认的登录用户名密码
输入casuser/Mellon 登录
4.建议
给cas单独弄个tomcat,并配置ssl访问,我本地开发复制了一份tomcat9,形成https的tomcat9-https,其他项目采用端口非8443的tomcat9。
1.2. IDEA引入CAS5.2.3 Server 项目,并覆盖原项目的部分配置
1.建项目
用IDEA 引入Apereo CAS5.2.3 Server端的项目cas-overlay
cas-overlay 项目中的 pom.xml 配置:
- 定义了多个profile,默认运行的profile 的id = default ;
- 多个仓库 repository ;
- 配置属性properties;
- 插件plugin ,插件有:
- wrapper-maven-plugin
- spring-boot-maven-plugin
- maven-war-plugin
在插件maven-war-plugin配置了overlay,maven的overlay为我们重写项目中的接口、配置文件等做好了准备,即我们可以重写一个和原项目war包中的接口,或者添加原项目中的配置文件内容,然后通过maven打包,将我们新增的接口或配置文件打包进去,这样保持了原项目的无侵入性。
如我们可以改变 原项目 cas-overlay中默认的登录名/密码为:yangxj/yangxj。
2.在原项目cas-overlay中创建webapp,即创建项目的Sources Root 和Resources Root,结构如下:
src
└─main
└─java
└─resources
将java文件夹标记为Sources Root,resources标记为Resources Root。
3. 将原项目中的application.properties、log4j2.xml和META-INF(以后用到)文件夹从cas原项目包中拷贝出来,
放到resources资源包里面。
修改application.properties这个文件。
修改SSL的keystore存在的位置:
#修改ssl证书
server.ssl.key-store=E:/mycas/futurecloud.keystore
server.ssl.key-store-password=changeit #证书导入到jdk中的密码
server.ssl.key-password=changeit #证书导入到jdk中的密码
将登录名/密码,修改为:yangxj/yangxj
cas.authn.accept.users=yangxj::yangxj
修改log4j2.xml 中的日志存放目录
<Properties>
<Property name="baseDir">E:\workspase\logs\cas</Property>
</Properties>
最终结构如下:
4. 配置调试注意:
- tomcat选择配置了ssl的那个
- url自己写一下,跟下面的https端口一样
- jdk至少1.8
- http port不要填,否则启动会报错
- contextpath配置为/cas
如下所示:
浏览器访问:https://www.futurecloud.com:8443/cas/login
使用账户 yangxj/yangxj登陆成功。