最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot項(xiàng)目集成第三方CAS-client jar包的方法

 更新時(shí)間:2025年12月04日 09:16:33   作者:碼刀攻城  
本文介紹了SpringBoot中集成第三方CAS-clientjar包的兩種核心方式,涵蓋了從背景原理到實(shí)操步驟、依賴沖突解決、打包配置及常見問題排查的全面內(nèi)容,通過對比兩種集成方式,提出了選型建議,并強(qiáng)調(diào)了依賴管理的規(guī)范性,為實(shí)際項(xiàng)目開發(fā)提供了全面指導(dǎo),感興趣的朋友一起看看吧

在企業(yè)級應(yīng)用開發(fā)中,隨著系統(tǒng)數(shù)量增多,用戶在多系統(tǒng)間頻繁登錄的問題日益凸顯。單點(diǎn)登錄(SSO,Single Sign-On)技術(shù)應(yīng)運(yùn)而生,而 CAS(Central Authentication Service,中央認(rèn)證服務(wù))作為主流的 SSO 實(shí)現(xiàn)方案,被廣泛用于企業(yè)內(nèi)部系統(tǒng)的統(tǒng)一認(rèn)證。本文將詳細(xì)講解 SpringBoot 項(xiàng)目引入第三方 CAS-client jar 包的完整流程,包括兩種集成方式的深度實(shí)操、依賴沖突解決、打包配置優(yōu)化及常見問題排查,幫助開發(fā)者高效完成 SSO 對接。

一、背景:為什么需要 CAS-client?

在傳統(tǒng)多系統(tǒng)架構(gòu)中,用戶需在每個(gè)系統(tǒng)單獨(dú)注冊、登錄,不僅影響用戶體驗(yàn),還增加了系統(tǒng)管理成本。CAS 作為一種開源的 SSO 框架,通過 “中央認(rèn)證服務(wù)器 + 客戶端” 的架構(gòu),實(shí)現(xiàn) “一次登錄,多系統(tǒng)訪問”:

  • CAS 服務(wù)器:負(fù)責(zé)統(tǒng)一認(rèn)證,存儲用戶賬號密碼,生成認(rèn)證憑證(Ticket);
  • CAS-client:集成在業(yè)務(wù)系統(tǒng)(如 SpringBoot 項(xiàng)目)中,負(fù)責(zé)與 CAS 服務(wù)器通信,攔截未認(rèn)證請求,驗(yàn)證用戶憑證,完成登錄狀態(tài)同步。

本文場景為:某企業(yè)需將 SpringBoot 業(yè)務(wù)系統(tǒng)接入現(xiàn)有 CAS 認(rèn)證體系,需引入第三方提供的cas-client-core-3.2.1.jar(非 Maven 中央倉庫可直接獲取的依賴),因此需通過自定義方式集成 jar 包。

二、SpringBoot 集成 CAS-client jar 包的兩種核心方式

針對非中央倉庫的第三方 jar 包,SpringBoot 項(xiàng)目通常采用 “本地 Maven 倉庫集成” 或 “項(xiàng)目內(nèi) lib 目錄集成” 兩種方式,以下為詳細(xì)實(shí)操步驟及拓展說明。

方式 1:本地 Maven 倉庫集成(適合個(gè)人調(diào)試 / 單系統(tǒng)開發(fā))

將第三方 jar 包安裝到本地 Maven 倉庫,再通過標(biāo)準(zhǔn)<dependency>標(biāo)簽引入,符合 Maven 依賴管理規(guī)范,適合個(gè)人開發(fā)或獨(dú)立 demo 調(diào)試場景。

1.1 準(zhǔn)備工作

  • 下載第三方cas-client-core-3.2.1.jar,存放路徑示例:D:\libs\cas-client-core-3.2.1.jar
  • 確認(rèn)本地 Maven 環(huán)境配置正常(執(zhí)行mvn -v可查看版本),若使用自定義 Maven 倉庫(非默認(rèn).m2/repository),需提前配置settings.xml(路徑:Maven 安裝目錄 /conf/settings.xml)。

1.2 安裝 jar 包到本地倉庫

通過 Maven 命令行工具,執(zhí)行mvn install:install-file命令,將 jar 包安裝到指定倉庫,命令格式及參數(shù)說明如下:

mvn install:install-file 
  -Dfile=D:\libs\cas-client-core-3.2.1.jar  # jar包本地絕對路徑
  -DgroupId=org.jasig.cas.client            # 依賴的groupId(需與jar包內(nèi)pom一致)
  -DartifactId=cas-client-core              # 依賴的artifactId(需與jar包內(nèi)pom一致)
  -Dversion=3.2.1                           # 依賴版本(需與jar包版本一致)
  -Dpackaging=jar                           # 打包類型(jar/war)
  -DlocalRepositoryPath=E:\maven-repo       # 可選:指定安裝到的本地倉庫路徑(多倉庫場景必配)
  • 參數(shù)說明:若不指定-DlocalRepositoryPath,jar 包將默認(rèn)安裝到user.home/.m2/repository;多倉庫場景下,需確保該路徑與項(xiàng)目使用的 Maven 倉庫一致(可在 IDE 中查看項(xiàng)目 Maven 配置)。

1.3 項(xiàng)目 pom.xml 引入依賴

安裝完成后,在 SpringBoot 項(xiàng)目的pom.xml中添加標(biāo)準(zhǔn)依賴,無需額外配置路徑:

<!-- CAS-client依賴(本地倉庫已存在) -->
<dependency>
    <groupId>org.jasig.cas.client</groupId>
    <artifactId>cas-client-core</artifactId>
    <version>3.2.1</version>
</dependency>

1.4 多 Maven 倉庫場景配置補(bǔ)充

若項(xiàng)目同時(shí)配置了本地倉庫、私有倉庫(如 Nexus),需在pom.xmlsettings.xml中指定倉庫優(yōu)先級,避免依賴?yán)∈?。示例:?code>settings.xml中配置倉庫順序:

<profiles>
    <profile>
        <id>maven-repo</id>
        <repositories>
            <!-- 優(yōu)先從自定義本地倉庫拉取 -->
            <repository>
                <id>local-repo</id>
                <url>file://E:\maven-repo</url>
                <releases><enabled>true</enabled></releases>
                <snapshots><enabled>true</enabled></snapshots>
            </repository>
            <!-- 其次從私有倉庫拉取 -->
            <repository>
                <id>nexus-repo</id>
                <url>http://192.168.1.100:8081/repository/maven-public/</url>
            </repository>
        </repositories>
    </profile>
</profiles>
<!-- 激活配置 -->
<activeProfiles>
    <activeProfile>maven-repo</activeProfile>
</activeProfiles>

方式 2:項(xiàng)目內(nèi) lib 目錄集成(適合團(tuán)隊(duì)協(xié)同開發(fā))

將 jar 包直接放在項(xiàng)目目錄下的lib文件夾中,通過system scope 指定路徑,避免團(tuán)隊(duì)成員重復(fù)安裝本地倉庫,適合多人協(xié)同開發(fā)場景。

2.1 新建項(xiàng)目 lib 目錄

在 SpringBoot 項(xiàng)目根目錄(與src、pom.xml同級)新建lib文件夾,將cas-client-core-3.2.1.jar復(fù)制到該目錄下,目錄結(jié)構(gòu)如下:

your-springboot-project/
├─ src/
├─ lib/
│  └─ cas-client-core-3.2.1.jar  # 第三方CAS-client jar包
├─ pom.xml
└─ .mvn/

2.2 獲取依賴的 groupId/artifactId(關(guān)鍵步驟)

pom.xmlsystem scope 依賴需準(zhǔn)確配置groupIdartifactId,需從 jar 包內(nèi)的 pom 文件中獲取,步驟如下:

  • 右鍵cas-client-core-3.2.1.jar,用壓縮軟件(如 WinRAR、7-Zip)打開;
  • 在 jar 包根目錄中找到pom.xml文件,解壓到本地;
  • 打開解壓后的pom.xml,查找以下配置(示例):
<modelVersion>4.0.0</modelVersion>
<groupId>org.jasig.cas.client</groupId>  <!-- 需復(fù)制的groupId -->
<artifactId>cas-client-core</artifactId>  <!-- 需復(fù)制的artifactId -->
<version>3.2.1</version>
<packaging>jar</packaging>
<name>Jasig CAS Client for Java - Core</name>

復(fù)制上述groupIdartifactId,用于項(xiàng)目pom.xml配置。

2.3 pom.xml 配置 system scope 依賴

pom.xml中添加依賴,通過${basedir}變量(表示項(xiàng)目根目錄)指定systemPath,避免硬編碼路徑:

<!-- CAS-client依賴(項(xiàng)目lib目錄) -->
<dependency>
    <groupId>org.jasig.cas.client</groupId>
    <artifactId>cas-client-core</artifactId>
    <version>3.2.1</version>
    <scope>system</scope>  <!-- 系統(tǒng)級依賴,需指定本地路徑 -->
    <!-- 路徑:項(xiàng)目根目錄/lib/cas-client-core-3.2.1.jar -->
    <systemPath>${basedir}/lib/cas-client-core-3.2.1.jar</systemPath>
</dependency>
  • 路徑說明:若lib目錄放在src/main/resources下,systemPath需改為${basedir}/src/main/resources/lib/cas-client-core-3.2.1.jar,需根據(jù)實(shí)際目錄調(diào)整。

三、依賴沖突深度解決(不止于 Shiro-CAS)

實(shí)際開發(fā)中還可能遇到版本不一致、重復(fù)引入等問題,需系統(tǒng)化排查與解決。

3.1 查看依賴樹,定位沖突來源

通過 Maven 命令查看項(xiàng)目完整依賴樹,找到引入cas-client-core的所有依賴:

mvn dependency:tree -Dincludes=org.jasig.cas.client:cas-client-core

執(zhí)行后會輸出類似結(jié)果:

[INFO] com.example:springboot-sso:jar:1.0.0
[INFO] +- org.apache.shiro:shiro-cas:jar:1.7.1:compile
[INFO] |  \- org.jasig.cas.client:cas-client-core:jar:3.1.10:compile  # 沖突版本
[INFO] \- org.jasig.cas.client:cas-client-core:jar:3.2.1:system      # 我們引入的版本

可見shiro-cas默認(rèn)引入了3.1.10版本,與我們需要的3.2.1沖突。

3.2 排除沖突依賴

在引入沖突依賴(如shiro-cas)時(shí),通過<exclusions>標(biāo)簽排除其自帶的cas-client-core

<!-- Shiro-CAS依賴,排除內(nèi)置的cas-client-core -->
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-cas</artifactId>
    <version>1.7.1</version>
    <exclusions>
        <!-- 排除沖突的cas-client-core版本 -->
        <exclusion>
            <groupId>org.jasig.cas.client</groupId>
            <artifactId>cas-client-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 拓展場景:若多個(gè)依賴均引入cas-client-core,需在所有沖突依賴中排除,確保項(xiàng)目僅使用我們指定的版本。

四、打包配置:確保第三方 jar 包被包含(多插件支持)

Maven 默認(rèn)不打包system scope 的依賴,需在打包插件中配置includeSystemScope=true,否則項(xiàng)目部署后會出現(xiàn)ClassNotFoundException。以下為兩種主流打包插件的配置方案。

4.1 SpringBoot 默認(rèn)打包插件(spring-boot-maven-plugin)

配置如下(需放在pom.xml<build><plugins>中):

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.7.0</version>  <!-- 與項(xiàng)目SpringBoot版本一致 -->
    <configuration>
        <!-- 關(guān)鍵配置:包含system scope的依賴 -->
        <includeSystemScope>true</includeSystemScope>
        <!-- 可選:指定主啟動(dòng)類 -->
        <mainClass>com.example.SpringBootSsoApplication</mainClass>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>  <!-- 重新打包成可執(zhí)行jar -->
            </goals>
        </execution>
    </executions>
</plugin>

4.2 Maven Assembly 插件(適合多模塊打包)

若項(xiàng)目為多模塊架構(gòu),或需自定義打包結(jié)構(gòu),可使用maven-assembly-plugin,配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.4.2</version>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>  <!-- 打包所有依賴 -->
        </descriptorRefs>
        <archive>
            <manifest>
                <mainClass>com.example.SpringBootSsoApplication</mainClass>  <!-- 主啟動(dòng)類 -->
            </manifest>
        </archive>
        <!-- 包含system scope依賴 -->
        <includeSystemScope>true</includeSystemScope>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

五、常見問題排查與解決方案

5.1 問題 1:啟動(dòng)報(bào)錯(cuò) ClassNotFoundException: org.jasig.cas.client.authentication.AuthenticationFilter

可能原因

  • systemPath路徑配置錯(cuò)誤;
  • 打包時(shí)未配置includeSystemScope=true
  • jar 包損壞或版本不匹配。

排查步驟

  • 驗(yàn)證systemPath正確性:在 IDE 中點(diǎn)擊${basedir}/lib/cas-client-core-3.2.1.jar,查看是否能跳轉(zhuǎn)至 jar 包;
  • 檢查打包后的 jar:用壓縮軟件打開目標(biāo) jar,查看BOOT-INF/lib下是否包含cas-client-core-3.2.1.jar;
  • 重新下載 jar 包:若 jar 包損壞,替換為正常版本。

5.2 問題 2:Maven 倉庫安裝后,項(xiàng)目仍無法拉取依賴

可能原因

  • 安裝路徑與項(xiàng)目使用的 Maven 倉庫不一致;
  • groupId/artifactId/version與安裝命令不一致。

排查步驟

  • 查看項(xiàng)目 Maven 配置:在 IDE(如 IDEA)中,進(jìn)入File > Settings > Build, Execution, Deployment > Build Tools > Maven,確認(rèn)Local repository路徑與安裝命令中的-DlocalRepositoryPath一致;
  • 核對依賴坐標(biāo):確保pom.xml中的groupId、artifactId、versionmvn install命令中的參數(shù)完全一致(大小寫敏感)。

六、CAS-client 初步配置與使用(拓展實(shí)操)

引入 jar 包后,需簡單配置 CAS-client 才能實(shí)現(xiàn) SSO 功能,以下為 SpringBoot 中的基礎(chǔ)配置(application.yml):

# CAS服務(wù)器配置
cas:
  server-url-prefix: http://cas.example.com/cas  # CAS服務(wù)器地址前綴
  server-login-url: http://cas.example.com/cas/login  # CAS登錄頁面地址
  client-host-url: http://localhost:8080  # 當(dāng)前SpringBoot項(xiàng)目地址(回調(diào)地址基礎(chǔ))
# CAS-client過濾器配置(SpringBoot方式)
spring:
  servlet:
    filter:
      cas:
        authentication-filter:
          enabled: true
          url-pattern: /*  # 攔截所有請求
        validation-filter:
          enabled: true
          url-pattern: /*
        ticket-validation-filter:
          enabled: true
          url-pattern: /*

同時(shí),需在啟動(dòng)類中注冊 CAS 相關(guān)過濾器(示例):

@SpringBootApplication
public class SpringBootSsoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootSsoApplication.class, args);
    }
    // 注冊CAS認(rèn)證過濾器
    @Bean
    public FilterRegistrationBean<AuthenticationFilter> authenticationFilter() {
        FilterRegistrationBean<AuthenticationFilter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(new AuthenticationFilter());
        registrationBean.addUrlPatterns("/*");
        Map<String, String> initParams = new HashMap<>();
        initParams.put("casServerLoginUrl", "${cas.server-login-url}");
        initParams.put("serverName", "${cas.client-host-url}");
        registrationBean.setInitParameters(initParams);
        return registrationBean;
    }
}

七、兩種集成方式對比與選型建議

對比維度方式 1:本地 Maven 倉庫方式 2:項(xiàng)目內(nèi) lib 目錄
適用場景個(gè)人開發(fā)、demo 調(diào)試團(tuán)隊(duì)協(xié)同開發(fā)、多人共享依賴
操作復(fù)雜度需執(zhí)行命令安裝,首次配置稍復(fù)雜直接復(fù)制 jar 包,配置簡單
依賴管理符合 Maven 規(guī)范,便于版本控制依賴脫離 Maven 倉庫,需手動(dòng)維護(hù)版本
團(tuán)隊(duì)協(xié)作成員需重復(fù)安裝到本地倉庫,效率低提交 lib 目錄到 Git,成員拉取即可使用
選型建議
  • 個(gè)人開發(fā)或短期 demo:優(yōu)先選擇方式 1,減少項(xiàng)目目錄冗余;
  • 團(tuán)隊(duì)協(xié)同或長期項(xiàng)目:優(yōu)先選擇方式 2,或進(jìn)階方案 —— 搭建私有 Maven 倉庫(如 Nexus),將第三方 jar 包上傳至私有倉庫,團(tuán)隊(duì)成員通過標(biāo)準(zhǔn)依賴引入,兼顧規(guī)范與協(xié)作效率。

八、總結(jié)

本文詳細(xì)講解了 SpringBoot 項(xiàng)目集成第三方 CAS-client jar 包的兩種核心方式,從背景原理到實(shí)操步驟,再到?jīng)_突解決、打包配置及問題排查,覆蓋了企業(yè)級開發(fā)中的關(guān)鍵場景。在實(shí)際項(xiàng)目中,需根據(jù)團(tuán)隊(duì)協(xié)作模式和項(xiàng)目需求選擇合適的集成方式,同時(shí)注重依賴管理的規(guī)范性,避免版本沖突和部署問題。后續(xù)可進(jìn)一步學(xué)習(xí) CAS 的高級功能(如單點(diǎn)登出、多因素認(rèn)證),為企業(yè)應(yīng)用構(gòu)建更安全、更完善的統(tǒng)一認(rèn)證體系。

相關(guān)文章

  • Java微信公眾平臺開發(fā)(5) 文本及圖文消息回復(fù)的實(shí)現(xiàn)

    Java微信公眾平臺開發(fā)(5) 文本及圖文消息回復(fù)的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺開發(fā)第五步,回文本及圖文消息回復(fù)的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Python連接Java Socket服務(wù)端的實(shí)現(xiàn)方法

    Python連接Java Socket服務(wù)端的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python連接Java Socket服務(wù)端的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • SpringBoot中VO/DTO/PO的具體使用

    SpringBoot中VO/DTO/PO的具體使用

    VO/DTO/PO等實(shí)體類中字段常常會存在多數(shù)相同,根據(jù)業(yè)務(wù)需求少數(shù)不同,本文主要介紹了SpringBoot中VO/DTO/PO的具體使用,感興趣的可以了解一下
    2024-03-03
  • MybatisPlus查詢條件為空字符串或null問題及解決

    MybatisPlus查詢條件為空字符串或null問題及解決

    這篇文章主要介紹了MybatisPlus查詢條件為空字符串或null問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java實(shí)現(xiàn)紅黑樹(平衡二叉樹)的詳細(xì)過程

    Java實(shí)現(xiàn)紅黑樹(平衡二叉樹)的詳細(xì)過程

    紅黑樹接近平衡的二叉樹,插入,刪除函數(shù)跟平衡二叉樹一樣,只是平衡函數(shù)不同,下面這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)紅黑樹(平衡二叉樹)的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Java解析XML的四種方法詳解

    Java解析XML的四種方法詳解

    XML現(xiàn)在已經(jīng)成為一種通用的數(shù)據(jù)交換格式,平臺的無關(guān)性使得很多場合都需要用到XML。本文將詳細(xì)介紹用Java解析XML的四種方法
    2012-10-10
  • Nutz Dao與Spring集成實(shí)踐

    Nutz Dao與Spring集成實(shí)踐

    文章介紹了在集成Spring和Nutz時(shí)處理事務(wù)管理的幾種方式,包括手動(dòng)管理、Spring聲明式事務(wù)管理以及將事務(wù)交給Spring管理的方法
    2026-02-02
  • java 生成有序賬號的實(shí)現(xiàn)方法

    java 生成有序賬號的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava 生成有序賬號的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • JavaWeb之Filter過濾器詳解

    JavaWeb之Filter過濾器詳解

    本篇文章主要介紹了JavaWeb之Filter過濾器詳解,實(shí)例分析了JavaWeb之Filter過濾器的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-03-03
  • SpringBoot監(jiān)聽Nacos動(dòng)態(tài)修改日志級別的操作方法

    SpringBoot監(jiān)聽Nacos動(dòng)態(tài)修改日志級別的操作方法

    線上系統(tǒng)的日志級別一般都是 INFO 級別,有時(shí)候需要查看 WARN 級別的日志,所以需要?jiǎng)討B(tài)修改日志級別,微服務(wù)項(xiàng)目中使用 Nacos 作為注冊中心,我們可以監(jiān)聽 Nacos 配置,修改日志級別,這篇文章主要介紹了SpringBoot監(jiān)聽Nacos動(dòng)態(tài)修改日志級別的操作方法,需要的朋友可以參考下
    2023-12-12

最新評論

黑山县| 格尔木市| 宝山区| 雷山县| 开阳县| 鲁山县| 贺州市| 信丰县| 奉新县| 墨玉县| 石门县| 廊坊市| 湖口县| 林甸县| 邯郸市| 兴化市| 温州市| 龙海市| 葵青区| 大丰市| 华宁县| 五台县| 九江县| 乌兰察布市| 监利县| 通渭县| 孙吴县| 房山区| 高邮市| 和林格尔县| 都昌县| 河曲县| 五家渠市| 邓州市| 广安市| 湖南省| 宾阳县| 西昌市| 东兴市| 青神县| 班戈县|