說明 :
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>