CAS單點(diǎn)登錄-集成客戶端springboot方式(八)

之前在服務(wù)端整合了數(shù)據(jù)庫,也完成的動(dòng)態(tài)service配置,我們一直在操作cas服務(wù)器端,這里我們就來使用springboot完成cas客戶端的接入操作。

環(huán)境概述

ip 端口 對應(yīng)服務(wù)
127.0.0.1 8443 CAS服務(wù)器
127.0.0.1 9001 CAS客戶端1
127.0.0.1 9002 CAS客戶端2

service配置(服務(wù)端)

客戶端接入 CAS 首先需要在服務(wù)端進(jìn)行注冊,否則客戶端訪問將提示“未認(rèn)證授權(quán)的服務(wù)”警告:


為了方便后面測試,我們這里對所有https和http請求的service進(jìn)行允許認(rèn)證,在resources/services下新建文件HTTPS_HTTP-10000001.json,這個(gè)文件是我從cas源代碼同路徑下拷貝過來的。

{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "^(https|imaps|http)://.*",
  "name" : "測試客戶端",
  "id" : 100002,
  "description" : "這是一個(gè)測試客戶端的服務(wù),所有的https或者h(yuǎn)ttp訪問都允許通過",
  "evaluationOrder" : 2
}

注意:
services目錄中可包含多個(gè) JSON 文件,其命名必須滿足以下規(guī)則:${name}-${id}.json,id必須為json文件中內(nèi)容id一致。
對其中屬性的說明如下,更多詳細(xì)內(nèi)容見官方文檔-Service-Management。

  • @class:必須為org.apereo.cas.services.RegisteredService的實(shí)現(xiàn)類
  • serviceId:對服務(wù)進(jìn)行描述的表達(dá)式,可用于匹配一個(gè)或多個(gè) URL 地址
  • name: 服務(wù)名稱
  • id:全局唯一標(biāo)志
  • description:服務(wù)描述,會顯示在默認(rèn)登錄頁
  • evaluationOrder:定義多個(gè)服務(wù)的執(zhí)行順序

application.properties:

##
# service 注冊配置
#
#開啟識別json文件,默認(rèn)false
cas.serviceRegistry.initFromJson=true

#自動(dòng)掃描服務(wù)配置,默認(rèn)開啟
#cas.serviceRegistry.watcherEnabled=true
#120秒掃描一遍
#cas.serviceRegistry.repeatInterval=120000
#延遲15秒開啟
#cas.serviceRegistry.startDelay=15000

#默認(rèn)json/yml資源加載路徑為resources/services
#cas.serviceRegistry.config.location=classpath:/services

啟動(dòng)cas-server

啟動(dòng)信息中如果發(fā)現(xiàn)下圖日志表示注冊成功



同時(shí)由于我們配置了mysql數(shù)據(jù)庫動(dòng)態(tài)service,系統(tǒng)會自動(dòng)見json中的service同步到數(shù)據(jù)庫中:


客戶端配置

  1. 新建cas-client1客戶端工程
    具體步驟這里就不詳細(xì)說明

  2. 引入cas-client依賴
    這里引入別人寫好的cas-client-autoconfig-support的starter類,當(dāng)前最新版:2.3.0-GA

<dependency>
    <groupId>net.unicon.cas</groupId>
    <artifactId>cas-client-autoconfig-support</artifactId>
    <version>2.3.0-GA</version>      
</dependency>
  1. 配置CAS服務(wù)器和客戶端地址
#cas配置
#cas服務(wù)端前綴,不是登錄地址
cas.server-url-prefix=http://localhost:8443/cas
#cas的登錄地址
cas.server-login-url=http://localhost:8443/cas/login
#當(dāng)前客戶端的地址
cas.client-host-url=http://localhost:9001
#Ticket校驗(yàn)器使用Cas30ProxyReceivingTicketValidationFilter
cas.validation-type=CAS3
  1. 開啟CAS Client支持
@SpringBootApplication
@EnableCasClient//開啟cas
public class Client1Application {

    public static void main(String[] args) {
        SpringApplication.run(Client1Application.class, args);
    }
}
  1. 編程測試Controller
@RestController
public class UserController {

    @GetMapping("/hello")
    public String hello() {
        return "恭喜CAS客戶端整合成功";
    }
}

  1. 瀏覽器輸入:http://localhost:9001/hello, 系統(tǒng)沒有登陸會自動(dòng)重定向到cas服務(wù)端登陸頁面
image.png
  1. 輸入:admin/123456 登陸后,會重定向會目標(biāo)路徑


注意:如果引入https必須保證客戶端證書和服務(wù)端證書是同一個(gè)證書,不然就會報(bào)錯(cuò)。

sudo keytool -import -file /Users/wangsaichao/Desktop/tomcat.cer -alias tomcat -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。