说明 :
1:实现目标,多个springboot项目,使用cas 实现单点登录。
2:cas使用cas-overlay-template-5.3版本 springboot 2.0 tomcat9 jdk1.8 开发平台 idea
详细过程
重要配置:先记录下:
application.properties 里配置
cas.tgc.secure=false cas.serviceRegistry.initFromJson=true
还有一个 HTTPSandIMAPS-10000001.json 添加http, 这个会影响 客户端使用http访问
{ "@class" : "org.apereo.cas.services.RegexRegisteredService", "serviceId" : "^(https|http|imaps)://.*", "name" : "HTTPS and IMAPS", "id" : 10000001, "description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.", "evaluationOrder" : 10000 }
1:下载 cas-overlay-template-5.3
下载地址:https://github.com/apereo/cas-overlay-template/tree/5.3
,然后解压到你想放的地址
2:导入idea中,什么都不用修改,打包,放入到本地tomcat下,启动tomcat ,就可以看到登录页面,默认账号只有一个
casuser:Mellon. 到这一步,算是和cas有个初步的印象。
进行一些修改,变成自己想要的模样
3:使用数据库用户
添加jdbc依赖,不要插错位置,在pom里有一段注释很清楚的写着:
<!--
...Additional dependencies may be placed here...
-->
然后在这里插入三个依赖包:
<!-- https://mvnrepository.com/artifact/org.apereo.cas/cas-server-support-jdbc --> <dependency> <groupId>org.apereo.cas</groupId> <artifactId>cas-server-support-jdbc</artifactId> <version>${cas.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apereo.cas/cas-server-support-jdbc-drivers 通过mvn命令添加的 --> <dependency> <groupId>org.apereo.cas</groupId> <artifactId>cas-server-support-jdbc-drivers</artifactId> <version>${cas.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency>
4:重新打包
就会发现,一直在downloading downloaded...慢,一直等到打包成功,因为默认的下载路径应该是国外服务器,所以特别的慢,于是改下maven setting里修改,配置到阿里云镜像,
<mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> <mirror> <id>nexus-public-snapshots</id> <mirrorOf>public-snapshots</mirrorOf> <url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url> </mirror>
再重新打包,发现特别的快,而且下载了很多jar,但还是没有成功,报错此文件找不到,于是自己下载,手动加载到本地库(这个应该都很熟悉了吧,搜索一大把的有)
5:修改项目的application.properties 文件,注掉默认的用户,添加数据库配置,这样再使用tomcat访问,用户就是自己数据库里配置的了。
## # CAS Authentication Credentials # #cas.authn.accept.users=casuser::Mellon # add db infor cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false cas.authn.jdbc.query[0].user=root cas.authn.jdbc.query[0].password=root cas.authn.jdbc.query[0].sql=select * from user where username=? cas.authn.jdbc.query[0].fieldPassword=password cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
6:继续修改,之前登录页面一直有 两个warning,一个是提示要使用https,一个是要使用数据库,数据库的我们已经实现了,现在修改https
要实现https,要有keystore,使用
keytool -genkey -alias cas -keyalg RSA -keysize 2048 -keypass 123456 -storepass 123456 -keystore D:/angin.keystore -dname "CN=localhost,OU=angiiin.com,O=angiiiin,L=TianJin,ST=TianJin,C=CN"
生成后 配置tomcat server.xml,同时把8080商品的http连接器注掉,这样再启动tomcat登录就可以使用https了。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="D:/angiiiin.keystore" type="RSA" certificateKeystoreType="JKS" certificateKeystorePassword="123456"/> </SSLHostConfig> </Connector>