自我总结
1. 依赖情况
- CAS对JDK版本的区分比较严格。 4.x需要Java7+, 而5.x则需要Java8+
- 依据公司情况,本人选择的是4.2.7版本。
2. 下载
依据自身的实际情况选择 Maven 或 Gradle 版本。
3. 导入Eclipse
详细步骤略过
修改配置文件位置, 参见上图中的标记。 打开文件 propertyFileConfigurer.xml
修改为你熟悉的位置; 建议复制原始的,放到一个熟悉的位置
4. 发布Tomcat
略
5. 修改为支持http协议
这里要注意的是:如果进行此类修改,就不要在eclipse里进行tomcat发布了,eclipse会不断覆盖你的修改
上面配置的
cas.properties
文件
tgc.secure=false
warn.cookie.secure=false${contextpath}\WEB-INF\classes\services\ HTTPSandIMAPS-10000001.json
"serviceId" : "^(https|imaps|http)://.*", // 增加 | http
cas目录/WEB-INF/view/jsp/default
文件夹里,其中ui/casLoginView.jsp
为登陆页面。我们找到这段代码删掉即可。
<%--
<c:if test="${not pageContext.request.secure}">
<div id="msg" class="errors">
<h2><spring:message code="screen.nonsecure.title" /></h2>
<p><spring:message code="screen.nonsecure.message" /></p>
</div>
</c:if>
--%>
6. 配置https
6.1 创建证书
- 使用JDK 的keytool 命令, 生成证书( 包含证书/ 公钥/ 私钥)
- 记住
-keystore
的设置值, 一会在tomcat的server.xml
配置中需要使用
cd C:\Java\jdk1.7.0_67\bin
keytool -genkey -keystore "D:\thekeystore" -alias localhost -keyalg RSA
6.2 应用证书到Web服务器-Tomcat
- 注意这里有一个相当坑的位置。
- 我的是Tomcat7.0.5,而在设置keystoreFile 和keystorePass时,千万注意这两个单词的大小写问题。
<!-- 注释掉
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="9999" protocol="HTTP/1.1" redirectPort="9443"/>
-->
<!-- 注释掉
Define an AJP 1.3 Connector on port 8009
<Connector port="9909" protocol="AJP/1.3" redirectPort="9443"/>
-->
<!-- SSL -->
<!--
1. keystoreFile:在第一步创建的key存放位置
2. keystorePass:创建证书时的密码
-->
<Connector SSLEnabled="true" clientAuth="false" maxThreads="150" port="8443"
protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="TLS"
keystoreFile="D:/Projects/_components/kanq-cas-server/etc/cas/jetty/thekeystore"
keystorePass="changeit" />
6.3 导出证书
- 首先使用
thekeystore
导出数字证书(公钥)。 - 导出证书完成后,可以分发给应用的JDK使用了。
keytool -export -file d:/wsria.crt -alias localhost -keystore D:\thekeystore
6.4 为客户端的JVM导入证书
- 因为CAS client需要使用上一部得到的证书进行验证,需要将证书导入到JDK。
- 如果导入失败,可以先把security 目录下的cacerts删掉。
keytool -import -keystore C:\Java\jdk1.8.0_92-64\jre\lib\security\cacerts -file D:/wsria.crt -alias localhost
7. 访问
http://localhost:9527/cas-overlay/login
输入用户名 casuser 密码 Mellon 登录成功
8. 疑难杂症
8.1 eclipse里启动 cas-overlay 超时
表现如下:
1. 启动之后 可以访问相应的contextpath, 但eclipse右下角一直是starting…., 最终因为超过启动时限而停止
2. 这种现象时有时没有。。。。
解决:
1. 直接进行Tomcat原生启动。
2. 如果有自定义的Server端开发需求,将启动时间配置足够长 (确实有点low了)
8.2 java.lang.UnsatisfieldLinkError
解决:
1. 原因是 WEB-INF\lib 下多出一个 javax.el-api-3.0.0.jar 。
2. 删除即可。
8.2 log4j2.xml缺失
cas-server-webapp-4.2.7.war中的 log4j2.xml 不知为何没有出现在最终的发布包中
解决:
1. 从 cas-server-webapp-4.2.7.war 下的 WEB-INF\classes\log4j2.xml 拷贝一份到 eclipse项目下的 src/main/resources 中。