目录
cas github地址 https://github.com/apereo/cas-overlay-template/tree/5.3
一、环境要求:
java 1.8系列的,cas5.3
二、生成密钥文件:thekeystore
1、终端进入java环境目录:
cd /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/bin
2、终端用keytool生成密钥文件
sudo keytool -genkey -v -keystore thekeystore -alias thekeystore -keyalg RSA
输入相关信息:(都推荐名字用域名,不太懂)
您的名字与姓氏是什么?
[Unknown]: cas.server.name
您的组织单位名称是什么?
[Unknown]: cas.server.name
您的组织名称是什么?
[Unknown]: cas.server.name
您所在的城市或区域名称是什么?
[Unknown]: wuhan
您所在的省/市/自治区名称是什么?
[Unknown]: hubei
该单位的双字母国家/地区代码是什么?
[Unknown]: cn
CN=cas.server.name, OU=cas.server.name, O=cas.server.name, L=wuhan, ST=hubei, C=cn是否正确?
[否]: y
密钥口令按照cas官方,设为changeit
若提示转换为标准格式,则按提示操作:
keytool -importkeystore -srckeystore thekeystore -destkeystore thekeystore -deststoretype pkcs12
运行完成后,生成thekeystore文件,文件目录为上述java环境目录
/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/bin
三、下载cas源码
推荐使用5.3和5.2版本,这里用的5.3
cas源码地址:GitHub - apereo/cas-overlay-template: Apereo CAS WAR Overlay template
选择如下版本,右侧download代码
四、打包cas项目
终端进入源码路径下
cd /Users/xxx/cas-overlay-template-5.3
终端输入命令
./build.sh package
五、部署cas项目
将源码中/etc/cas下config目录复制到系统路径下:/etc/cas
将生成的thekeystore文件放入系统路径下:/etc/cas,不是项目下的对应路径。
六、运行cas项目
终端源码目录下,输入以下命令
sudo ./build.sh run
出现以下界面,没有报错信息即运行成功
七、登录测试
测试网址:https://localhost:8443/cas
测试用户名/密码:casuser/Mellon
八、报错及原因
报错一:java不是1.8版本出现的问题
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlType
查看运行结果apereocas图标下的Java Version,如果不是1.8的版本,则按以下方式解决。
错误原因:系统中同时有不同版本的java(jdk)时,会按照从新到旧的顺序排列,并在运行cas时使用最新的jdk(top jdk),即使用上述结果中的第一个java版本:11.0.16.1。因此导致报错。为此想办法将1.8的版本变为top jdk。方法如下:
修改1.8版本的Info.plist 文件的 dict#dict#JVMVersion 下的标签内容,1.8.0_291 →18.0_291
/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Info.plist
修改后再执行应该这个报错就没有了。
注:关于切换不同版本的java,有很多说在bash或zsh配置文件中添加对应的环境路径,但都无法改变/usr/libexec/java_home的输出结果。该结果由java版本决定,通常的配置环境方法不起作用。因此采用这里的方法。参考自:https://my.oschina.net/kaisesai/blog/5529758
补充:zsh相关的一些命令,如查看java环境、修改配置文件,查看以下链接:
不同版本jdk在系统中的位置如下:
终端查看系统top jdk,输入命令
/usr/libexec/java_home # 输入命令
# 修改Info.plist前输出结果:
(base) wuzhenkun@wuzhenkundeMacBook-Air ~ % /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk-11.0.16.1.jdk/Contents/Home
# 修改Info.plist后输出结果:
(base) wuzhenkun@wuzhenkundeMacBook-Air ~ % /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home
终端查看系统jdk所有版本,输入命令
/usr/libexec/java_home -V #输入命令
# 修改Info.plist前输出结果
(base) xxx@xxxdeMacBook-Air ~ % /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
11.0.16.1 (arm64) "Oracle Corporation" - "Java SE 11.0.16.1" /Library/Java/JavaVirtualMachines/jdk-11.0.16.1.jdk/Contents/Home
1.8.341.10 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_291 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-11.0.16.1.jdk/Contents/Home
# 修改Info.plist后输出结果
(base) xxx@xxxdeMacBook-Air ~ % /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
18.0_291 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home
11.0.16.1 (arm64) "Oracle Corporation" - "Java SE 11.0.16.1" /Library/Java/JavaVirtualMachines/jdk-11.0.16.1.jdk/Contents/Home
1.8.341.10 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home
# 排序第一的即为top jdk
报错二:权限问题,sudo
ERROR RollingFileManager (/etc/cas/logs/cas.log) java.io.FileNotFoundException: /etc/cas/logs/cas.log (Permission denied) java.io.FileNotFoundException: /etc/cas/logs/cas.log (Permission denied)
解决方式:在终端执行命令前加sudo
报错三:密钥问题
java.lang.IllegalArgumentException: Invalid keystore format
欢迎各位指正。