springboot項目使用cas進行單點登錄-服務器端實現


說明 :

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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM