CAS 5.3 使用http协议替代https协议提供服务
一、版本说明
CAS Server默认使用https协议提供服务,https协议需要ssl证书,可以使用jdk工具keytool生成自签名证书,也可到证书机构申请证书(收费)。
cas.version 5.3.16
springboot.version 1.5.18.RELEASE
二、使用http协议提供服务
1.springboot内嵌tomcat部署
- 修改application.yml或application.properties配置文件
server:
port: 8080
ssl:
key-store: classpath:server.keystore
key-store-password: tomcat
key-password: tomcat
# 改为false
enabled: false
cas:
tgc:
secure: false
warningCookie:
secure: false
serviceRegistry:
initFromJson: true
server:
name: http://cas.example.org:8080
prefix: http://cas.example.org:8080/cas
- 新增resources/services/test.json文件,允许http客户端
{
"@class": "org.apereo.cas.services.RegexRegisteredService",
"serviceId": "^(https|imaps|http)://.*",
"name": "测试",
"id": 1000,
"description": "测试",
"evaluationOrder": 1000
}
- 最后别忘记修改CAS客户端server url地址
server:
name: http://cas.example.org:8080
prefix: http://cas.example.org:8080/cas
2.tomcat部署(非内嵌)
- 注释tomcat/config目录下server.xml部分内容
<!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https"
secure="true" clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\softs\apache-tomcat-8.5.37\server.keystore" keystorePass="tomcat">
</Connector> -->
- 修改application.yml或application.properties配置文件
cas:
tgc:
secure: false
warningCookie:
secure: false
serviceRegistry:
initFromJson: true
server:
name: http://cas.example.org:8080
prefix: http://cas.example.org:8080/cas
- 新增resources/services/test.json文件,允许http客户端
{
"@class": "org.apereo.cas.services.RegexRegisteredService",
"serviceId": "^(https|imaps|http)://.*",
"name": "测试",
"id": 1000,
"description": "测试",
"evaluationOrder": 1000
}
- 最后别忘记修改CAS客户端server url地址
server:
name: http://cas.example.org:8080
prefix: http://cas.example.org:8080/cas
3.清理https协议下配置
- 清理keytool自签名证书
keytool -delete -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
- 清理浏览器缓存(特别是cookie)
说明:若从一开始就是的是http协议此步骤可以省略!
4.注意事项
-
打开浏览器后不要来回切换https和http协议,避免session在协议切换时丢失
http和https共存导致session丢失 -
注意域名要保持一致
测试过程中,在hosts文件中增加了127.0.0.1 cas.example.org映射,但是浏览器访问时,使用的是localhost,注意cas.example.org和localhost虽然都指向IP 127.0.0.1,但是浏览器认为是两个域,cookie无法共享(CAS TGC无法共享)。
http://localhost:8080/cas/login登录成功后,但是客户端CAS Server前缀为http://cas.example.org:8080/cas,仍然需要重新登录,也就是登录状态未同步!
读者可使用谷歌浏览器查看network-请求地址-cookie确认该现象。