1.生成keystore
keytool是jdk自带的工具
keytool -genkey -v -alias zxl -keyalg RSA -keystore F:\DEVELOP\cas\keystore\zxl.keystore
666666
zxl.com
zxl.com
zxl.com
wuhan
jiangsu
cn
y
666666
2.导出证书
keytool -export -trustcacerts -alias zxl -file F:\DEVELOP\cas\keystore\zxl.cert -keystore F:\DEVELOP\cas\keystore\zxl.keystore
666666
3.将证书导入jdk证书库
keytool -import -trustcacerts -alias zxl -file F:\DEVELOP\cas\keystore\zxl.cert -keystore F:\DEVELOP\Java\jdk1.8.0_202\jre\lib\security\cacerts
changeit
y
4.配置tomcat --> server.xml
加入如下配置:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" schema="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="F:\DEVELOP\cas\keystore\zxl.keystore"
keystorePass="666666"/>
5.解决Tomcat cmd窗口日志乱码的问题
具体原因是Tomcat日志配置的是utf-8编码,而cmd是GBK编码。将Tomcat日志编码改成GBK即可
java.util.logging.ConsoleHandler.encoding = GBK
6.验证Tomcat https配置
能正常访问即可
https://localhost:8443/
7.下载CAS Server War包
war包下载地址:
https://repo1.maven.org/maven2/org/apereo/cas/cas-server-webapp-tomcat/5.3.14/
war包是已经编译好的,直接可以拿来使用:
https://repo1.maven.org/maven2/org/apereo/cas/cas-server-webapp-tomcat/5.3.14/cas-server-webapp-tomcat-5.3.14.war
官网:
https://www.apereo.org/projects/cas
github主页:
https://github.com/apereo/cas
服务端(需要二开在此项目上进行修改后发布):
https://github.com/apereo/cas-overlay-template
8.将war包拷贝到tomcat–webapps目录
会自动进行解压。将目录名称改成cas,访问:
https://localhost:8443/cas
出现登录界面即成功配置。
9.查询cas默认的用户名密码
在如下目录找到:
F:\DEVELOP\apache-tomcat-9.0.46\webapps\cas\WEB-INF\classes\application.properties
查找如下行,默认是最后一行,casuser::Mellon分别为用户名和密码
cas.authn.accept.users=casuser::Mellon
10.配置cas的日志路径
在F:\DEVELOP\apache-tomcat-9.0.46\webapps\cas\WEB-INF\classes\log4j2.xml文件中配置:默认为首行位置
<Properties>
<Property name="baseDir">F:\DEVELOP\cas\logs</Property>
</Properties>
11.配置hosts文件
为了方便cas客户端访问,配置hosts文件
127.0.0.1 zxl.com
12.创建cas相关库表
use db_cas_sso;
drop table if exists t_cas;
CREATE TABLE t_cas (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(30) DEFAULT NULL,
password VARCHAR(100) DEFAULT NULL,
PRIMARY key(id)
)engine=INNODB DEFAULT CHARSET=utf8;
insert into t_cas(id,username,password) VALUES(1,'zxl','zxl');
13.cas application.properties文件中噢诶之
在如下目录找到:
F:\DEVELOP\apache-tomcat-9.0.46\webapps\cas\WEB-INF\classes\application.properties
注释掉如下这行:
#cas.authn.accept.users=casuser::Mellon
加上jdbc数据源配置:
# cas.authn.accept.users=casuser::Mellon
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/db_cas_sso?serverTimezone=GMT
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=011220
cas.authn.jdbc.query[0].sql=select * from t_cas where username=?
#password配置含义:通过password字段进行校验
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
14.添加相关驱动包
将如下四个jar包添加到目标目录:F:\DEVELOP\apache-tomcat-9.0.46\webapps\cas\WEB-INF\lib
cas-server-support-jdbc-5.3.14.jar
cas-server-support-jdbc-authentication-5.3.14.jar
cas-server-support-jdbc-drivers-5.3.14.jar
mysql-connector-java-5.1.28-bin.jar
15.cas密码加密
配置cas用户密码的md5密文,数据库存储密文,前台输入明文密码也可通过校验。
修改cas的application.properties配置文件:F:\DEVELOP\apache-tomcat-9.0.46\webapps\cas\WEB-INF\classes\application.properties
在最后一行添加如下配置:
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
#MD5加密策略
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
用户名和密码均为zxl,测试通过。
16.cas客户端工程搭建
项目位置:
F:\DEVELOP\workspace\java\sso-sys
17.报错:未认证授权的服务
报错原因是cas服务器默认不支持http请求,我们可以通过配置来让其支持http请求;
F:\DEVELOP\apache-tomcat-9.0.46\webapps\cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json
将
"serviceId" : "^(https|imaps)://.*"
改为
"serviceId" : "^(https|http|imaps)://.*",
F:\DEVELOP\apache-tomcat-9.0.46\webapps\cas\WEB-INF\classes\application.properties
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
解决:EL1007E: Property or field ‘xxxxx’ cannot be found on null
Springboot项目的前端的thymleaf报这样的错
原因:
①后台传到前端的对象里没有xxxxx属性
②前端取属性xxxxx的名字写错了,所以取值不到