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

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

環(huán)境概述

ip 端口 對應服務
127.0.0.1 8443 CAS服務器
127.0.0.1 9001 CAS客戶端1
127.0.0.1 9002 CAS客戶端2

service配置(服務端)

客戶端接入 CAS 首先需要在服務端進行注冊,否則客戶端訪問將提示“未認證授權的服務”警告:


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

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

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

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

application.properties:

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

#自動掃描服務配置,默認開啟
#cas.serviceRegistry.watcherEnabled=true
#120秒掃描一遍
#cas.serviceRegistry.repeatInterval=120000
#延遲15秒開啟
#cas.serviceRegistry.startDelay=15000

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

啟動cas-server

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



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


客戶端配置

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

  2. 引入cas-client依賴
    這里引入別人寫好的cas-client-autoconfig-support的starter類,當前最新版: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服務器和客戶端地址
#cas配置
#cas服務端前綴,不是登錄地址
cas.server-url-prefix=http://localhost:8443/cas
#cas的登錄地址
cas.server-login-url=http://localhost:8443/cas/login
#當前客戶端的地址
cas.client-host-url=http://localhost:9001
#Ticket校驗器使用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)沒有登陸會自動重定向到cas服務端登陸頁面
image.png
  1. 輸入:admin/123456 登陸后,會重定向會目標路徑


注意:如果引入https必須保證客戶端證書和服務端證書是同一個證書,不然就會報錯。

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容