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
此时可以启动tomcat,看看cas是否能打开
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的名字写错了,所以取值不到