CAS5.3服務器搭建及SpringBoot整合CAS實現單點登陸

1.1 什麼是單點登陸

單點登陸(Single Sign On),簡稱爲 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只須要登陸一次就能夠訪問全部相互信任的應用系統。java

咱們目前的系統存在諸多子系統,而這些子系統是分別部署在不一樣的服務器中,那麼使用傳統方式的session是沒法解決的,咱們須要使用相關的單點登陸技術來解決。git

1.2 什麼是CAS

CAS 是 Yale 大學發起的一個開源項目,旨在爲 Web 應用系統提供一種可靠的單點登陸方法,CAS 在 2004 年 12 月正式成爲 JA-SIG 的一個項目。CAS 具備如下特色:github

【1】開源的企業級單點登陸解決方案。web

【2】CAS Server 爲須要獨立部署的 Web 應用。spring

【3】CAS Client 支持很是多的客戶端(這裏指單點登陸系統中的各個 Web 應用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。apache

從結構上看,CAS 包含兩個部分: CAS Server 和 CAS Client。CAS Server 須要獨立部署,主要負責對用戶的認證工做;CAS Client 負責處理對客戶端受保護資源的訪問請求,須要登陸時,重定向到 CAS Server。下圖是 CAS 最基本的協議過程:json

從結構上看,CAS 包含兩個部分: CAS Server 和 CAS Client。CAS Server 須要獨立部署,主要負責對用戶的認證工做;CAS Client 負責處理對客戶端受保護資源的訪問請求,須要登陸時,重定向到 CAS Server 瀏覽器

SSO單點登陸訪問流程主要有如下步驟:tomcat

1. 訪問服務:SSO客戶端發送請求訪問應用系統提供的服務資源。springboot

2. 定向認證:SSO客戶端會重定向用戶請求到SSO服務器。

3. 用戶認證:用戶身份認證。

4. 發放票據:SSO服務器會產生一個隨機的Service Ticket。

5. 驗證票據:SSO服務器驗證票據Service Ticket的合法性,驗證經過後,容許客戶端訪問服務。

6. 傳輸用戶信息:SSO服務器驗證票據經過後,傳輸用戶認證結果信息給客戶端。

1.3 CAS服務端部署

1.template下載

下載CAS 模板 Overlay Template,我這裏使用 Apereo CAS 5.3.x 版本,JDK須要1.8+

地址:https://github.com/apereo/cas-overlay-template/tree/5.3

1. 解壓下載的zip壓縮包

2. 解壓後使用maven命令打包 

mvn package

3. 把target下生成的war包重命名爲cas.war放到tomcat下 
4. 啓動tomcat 
5. 找到解壓的文件

因爲CAS默認使用的是基於https協議,須要改成兼容使用http協議 
到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes(這是個人目錄,去你對應目錄下找,不要找錯啊,實在不行用everything搜索吧)目錄的application,properties添加以下的內容

cas.tgc.secure=false cas.serviceRegistry.initFromJson=true

到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes\services目錄下的HTTPSandIMAPS-10000001.json 
修改內容以下,即添加http

"serviceId" : "^(https|http|imaps)://.*",

兼容http修改完畢,因爲https協議默認使用的端口爲8443,咱們修改成tomcat的8080端口 
到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes目錄的application,properties添加以下的內容

server.port=8080

因爲默認的用戶名和密碼爲casuser::Mellon很差記憶, 
修改用戶名和密碼(根據須要修改爲本身想要的) 
到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes目錄的application,properties的最後面修改密碼爲以下

cas.authn.accept.users=yyh::123456

CAS服務器搭建完畢,重啓tomcat 進行測試,在瀏覽器中輸入http://localhost:8080/cas/login或者http://localhost:8080/cas

便可跳轉到cas服務登陸界面,以下圖:

 

輸入帳號和密碼,便可登入,以下圖:

 

 在瀏覽器輸入http://localhost:8080/cas/logout便可退出服務,以下圖:

1.4 客戶端搭建

接下來搭建springboot項目的客戶端1

在新建的springboot項目的pom.xml添加以下依賴(匹配對應的版本)

<dependency>
            <groupId>net.unicon.cas</groupId>
            <artifactId>cas-client-autoconfig-support</artifactId>
            <version>2.1.0-GA</version>
        </dependency>

在resources下新建application.properties(或者application.yml)

server.port=8088 #cas服務端的地址 cas.server-url-prefix=http://localhost:8080/cas
#cas服務端的登陸地址 cas.server-login-url=http://localhost:8080/cas/login
#當前服務器的地址(客戶端) cas.client-host-url=http://localhost:8088
#Ticket校驗器使用Cas30ProxyReceivingTicketValidationFilter cas.validation-type=cas3

若是新建的是application.yml

 
 
server: port: 8088
cas: server-url-prefix: http://localhost:8080/cas
  server-login-url: http://localhost:8080/cas/login
  client-host-url: http://localhost:8088
  validation-type: cas3

在java下新建一個com.learn包,在包下新建一個Application 類,代碼以下:

import net.unicon.cas.client.configuration.EnableCasClient; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; 
#啓動CAS @EnableCasClient @EnableCasClient @SpringBootApplication
public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

在新建一個測試類CasTest1,代碼以下:

import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration public class CasTest1 { @RequestMapping("/test1") public String test1(){ return "test1...."; } }

 

接下來搭建springboot項目的客戶端2

方式同理,不一樣的是在resources下新建application.properties(或者application.yml)的server.port的端口號進行修改,以下:

server.port=8090 #cas服務端的地址 cas.server-url-prefix=http://localhost:8080/cas
#cas服務端的登陸地址 cas.server-login-url=http://localhost:8080/cas/login
#當前服務器的地址(客戶端) cas.client-host-url=http://localhost:8090
#Ticket校驗器使用Cas30ProxyReceivingTicketValidationFilter cas.validation-type=cas3

客戶端1,客戶端2和cas服務器搭建好以後,接下來咱們進行測試:

1. 首先啓動上面步驟中放置了cas的tomca服務器,進入D:\software\apache-tomcat-8.5.43\bin目錄下,找到startup.bat,雙擊,便可啓動。

2. 啓動客戶端1和客戶端2,在瀏覽器中輸入http://localhost:8088/test1

即跳轉到cas登陸驗證界面,以下圖:

 

 

在不登陸的狀況下,在瀏覽器另外一窗口輸入客戶端2,即在瀏覽器中輸入http://localhost:8090/test2

一樣,進入到了cas登陸驗證界面,以下圖:

 

當咱們在其中一個登陸界面登陸帳號後(假設登陸客戶端2)就會跳轉到登錄後的界面,以下圖:

 

咱們再次在瀏覽器窗口從新輸入客戶端1,http://localhost:8088/test1,或者在剛剛輸入客戶端頁面從新刷新

不用登陸便可進入頁面,以下圖:

至此,整個單點登陸的測試就結束。

 

開通了CSDN,歡迎訪問:http://www.javashuo.com/article/p-haywnbvy-ho.html

相關文章
相關標籤/搜索