1.背景介紹 什么是CAS
單點(diǎn)登錄(SSO),在多系統(tǒng)之間用戶只需要登錄一次就可以訪問所有互相信任的系統(tǒng)
SSO基礎(chǔ)的訪問流程:
訪問服務(wù): SSO 客戶端發(fā)送請(qǐng)求訪問應(yīng)用系統(tǒng)提供的服務(wù)資源。
定向認(rèn)證: SSO 客戶端會(huì)重定向用戶請(qǐng)求到 SSO 服務(wù)器七兜。
用戶認(rèn)證:用戶身份認(rèn)證丸凭。
發(fā)放票據(jù): SSO 服務(wù)器會(huì)產(chǎn)生一個(gè)隨機(jī)的 Service Ticket 。
驗(yàn)證票據(jù): SSO 服務(wù)器驗(yàn)證票據(jù) Service Ticket 的合法性腕铸,驗(yàn)證通過后惜犀,允許客戶端訪問服務(wù)。
傳輸用戶信息: SSO 服務(wù)器驗(yàn)證票據(jù)通過后恬惯,傳輸用戶認(rèn)證結(jié)果信息給客戶端
CAS是一個(gè)應(yīng)用實(shí)例,基礎(chǔ)流程如下:
CAS分為Server和Client端,Cas Server需要獨(dú)立部署,主要負(fù)責(zé)對(duì)用戶的認(rèn)證;CAS client 負(fù)責(zé)處理對(duì)客戶端受保護(hù)資源的訪問請(qǐng)求,需要登錄的時(shí)候重定向到server 端
2.搭建CAS5.3
采用JAVA1.8,則建議采用基于CAS5.3版本的,使用Maven工程構(gòu)建,CAS5.X之后使用的是基于SpringBoot的,模版引擎使用Thymeleaf.
2.1下載地址
CAS Server5.3版本,可以下載ZIP包,并解壓至自己的目錄下
2.2打包成服務(wù)端的war包
在解壓目錄下進(jìn)入cmd,執(zhí)行 mvn package (前提保證自己的環(huán)境有maven),即可在target下生成cas.war包
2.3 tomcat啟動(dòng)
cas.war放到tomcat的apache-tomcat-9.0.36\webapps
中向拆,啟動(dòng)tomcat
啟動(dòng)后在即可在tomcat的webapps目錄下看到解壓后的cas目錄
修改參數(shù):
- 由于CAS默認(rèn)使用https,為了方便springboot搭建的客戶端采用http訪問,需要改為兼容使用http協(xié)議
webapps\cas\WEB-INF\classes\application.properties
最后一行添加:
也可以修改端口,默認(rèn)是https協(xié)議8443端口,
修改默認(rèn)的登錄賬號(hào)和密碼
##
# 修改http 端口
#
server.context-path=/cas
server.port=8080
##
# 修改用戶名、密碼
#
cas.authn.accept.users=admin::admin
#啟用記載JSON配置文件
#打開文件cas\WEB-INF\classes\application.properties
#增加如下配置
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
- 在webapps\cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json
支持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
}
cas 訪問地址:
CAS客戶端配置
# CAS客戶端配置(就是自己項(xiàng)目)
pom.xml依賴
<dependency>
<groupId>net.unicon.cas</groupId>
<artifactId>cas-client-autoconfig-support</artifactId>
<version>2.1.0-GA</version>
</dependency>
application.properties配置文件
客戶端1
server.port=8088
#cas服務(wù)端的地址
cas.server-url-prefix=[http://localhost:8080/cas](http://localhost:8080/cas)
#cas服務(wù)端的登錄地址
cas.server-login-url=[http://localhost:8080/cas/login](http://localhost:8080/cas/login)
#當(dāng)前服務(wù)器的地址(客戶端)
cas.client-host-url=[http://localhost:8088](http://localhost:8088)
#Ticket校驗(yàn)器使用Cas30ProxyReceivingTicketValidationFilter
cas.validation-type=CAS3
**每個(gè)客戶端只要修改當(dāng)前服務(wù)器地址就行了**
如客戶端2
**server.port=8090**
#cas服務(wù)端的地址
cas.server-url-prefix=[http://localhost:8080/cas](http://localhost:8080/cas)
#cas服務(wù)端的登錄地址
cas.server-login-url=[http://localhost:8080/cas/login](http://localhost:8080/cas/login)
#當(dāng)前服務(wù)器的地址(客戶端)
**cas.client-host-url=[http://localhost:8090](http://localhost:8090)**
#Ticket校驗(yàn)器使用Cas30ProxyReceivingTicketValidationFilter
cas.validation-type=CAS3
配置完成
沒有登陸時(shí)[http://localhost:8088](http://localhost:8088)和[http://localhost:8090](http://localhost:8090)訪問都會(huì)跳到CAS 登陸頁
只要客戶端1登陸了酪耳,登陸端2就能直接訪問浓恳,反之也能訪問
參考:
CAS5.3單點(diǎn)登錄服務(wù)端搭建與整合springboot
CAS服務(wù)端搭建和結(jié)合Springboot搭建CAS客戶端驗(yàn)證單點(diǎn)登錄