elasticsearch入門系列">elasticsearch入門系列
1173
2022-05-29
文章目錄
一、 SSO簡介
1.1 單點登錄定義
1.2 單點登錄角色
1.3 單點登錄分類
二、 CAS簡介
2.1 CAS簡單定義
2.2 CAS體系結構
2.3 CAS原理
三、CAS服務端部署
附錄
一、 SSO簡介
1.1 單點登錄定義
單點登錄(Single sign on),英文名稱縮寫SSO,SSO的意思就是在多系統的環境中,登錄單方系統,就可以在不用再次登錄的情況下訪問相關受信任的系統。也就是說只要登錄一次單體系統就可以。
1.2 單點登錄角色
單點登錄一般包括下面三種角色:
①用戶(多個);
②認證中心(一個);
③Web應用(多個)。
PS:這里所說的web應用可以理解為SSO Client,認證中心可以說是SSO Server。
1.3 單點登錄分類
因為http協議是無狀態的協議,所以要保持登錄狀態,必須要存儲登錄信息,按照存儲方式,單點登錄實現方式主要可以分為兩種。
一種是基于Cookie的,這種比較常見,比如下文介紹的CAS也是基于Cookie的;
另外一種是基于Session的,其實理解起來就是會話共享,只有實現不同子系統之間的會話共享就能實現單點登錄,詳情可以參考我之前的博客,就是實現會話共享實現單點登錄的,https://blog.csdn.net/u014427391/article/details/78653482
二、 CAS簡介
2.1 CAS簡單定義
CAS(Center Authentication Service)是耶魯大學研究的一款開源的單點登錄項目,主要為web項目提供單點登錄實現,屬于Web SSO。
CAS Github鏈接
Apereo CAS官方網站
2.2 CAS體系結構
CAS體系結構分為CAS Server和CAS Client。
CAS Server就是Cas開源的,需要去github下載,然后進行修改;Cas Client
可以是App或者web端的或者PC端,CAS支持多種開發語言,java、php、C#等等
PS:圖來自官網,這里簡單介紹一下,從圖可以看出,CAS支持多種方式的認證,一種是LDAP的、比較常見的數據庫Database的JDBC,還有Active Directory等等;支持的協議有Custom Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、 SAML2.0 等
2.3 CAS原理
下面給出一張來自CAS官方的圖片
CAS登錄等系統分為CAS Server和CAS Client,下面,我根據我的理解稍微解釋一下:
1、用戶訪問CAS Client請求資源
2、客戶端程序做了重定向,重定向到CAS Server
3、CAS Server會對請求做認證,驗證是否有TGC(Ticket Granted Cookie,有TGC說明已經登錄過,不需要再登錄,沒有就返回登錄頁面
4、認證通過后會生成一個Service Ticket返回Cas Client,客戶端進行Ticket緩存,一般放在Cookie里,我們稱之為TGC(Ticket Granted Cookie)
5、然后Cas Client就帶著Ticket再次訪問Cas Server,CAS Server進行Ticket驗證
6、CAS Server對Ticket進行驗證,通過就返回用戶信息,用戶拿到信息后就可以登錄
看到這個過程,我們大概就能理解CAS是怎么實現的,看起來過程挺多的,不過這些過程都是CAS在后臺做的。CAS Service和CAS Client通訊基于HttpUrlConnection
注意要點:
TGT(Ticket Granded Ticket),就是存儲認證憑據的Cookie,有TGT說明已經通過認證
ST(Service Ticket),是由CAS認證中心生成的一個唯一的不可偽裝的票據,用于認證的
沒登錄過的或者TGT失效的,訪問時候也跳轉到認證中心,發現沒有TGT,說明沒有通過認證,直接重定向登錄頁面,輸入賬號密碼后,再次重定向到認證中心,驗證通過后,生成ST,返回客戶端保存到TGC
登錄過的而且TGT沒有失效的,直接帶著去認證中心認證,認證中心發現有TGT,重定向到客戶端,并且帶上ST,客戶端再帶ST去認證中心驗證
三、CAS服務端部署
現在博客簡單介紹一下,CAS Server簡單部署實現,CAS是一款開源框架,目前應用比較廣泛。下面簡單介紹一下:
cas開源到github上,不過只有幾個版本有cas release服務端,其它大部分版本都只有source源碼而已,所以其它版本都需要自己編譯,不想自己編譯的可以下載V4.0.0版本的。
https://github.com/apereo/cas/releases/tag/v4.0.0
下載cas server之后,我們就可以簡單部署一下,中間件可以用Tomcat
cas的安全機制是依靠SSL實現的,所以一般的http非安全鏈接不支持的,雖然是這么說,不過學習練習的話,也可以去掉https要求,下面介紹說一下:
可以先將cas-server-4.0.0-release.zip解壓到Tomcat的webapp目錄下面,然后需要修改一個配置文件
(1)、先修改一下cas-server-4.0.0-release的WEB-INF下面的deployerConfigContext.xml
修改前:
1
2
3
4
修改后,PS:加上p:requireSecure=“false”
1
2
3
(2)、修改WEB-INF下面的spring-configuration文件夾下面的ticketGrantingTicketCookieGenerator.xml
修改前:
1
2
3
4
5
修改后,PS:改為p:cookieSecure=“false”
1
2
3
4
5
(3)、修改WEB-INF下面的spring-configuration文件夾下面的warnCookieGenerator.xml
修改前:
1
2
3
4
5
修改后,PS:改為p:cookieSecure=“false”
1
2
3
4
5
6
(4)、修改CAS默認登錄jsp頁面
可以注釋WEB-INF\view\jsp\default\ui\casLoginView.jsp頁面如下代碼
You are currently accessing CAS over a non-secure connection. Single Sign On WILL NOT WORK. In order to have single sign on work, you MUST log in over HTTPS. Non-secure Connection
1
2
3
4
5
6
去掉Https支持要求后,就可以通過http的鏈接登錄cas server了,用戶名是casuser,密碼是Mellon
PS:可以在deployerConfigContext.xml里看到配置,正規項目是實現jdbc支持
1
2
3
4
5
6
7
8
單點登錄
單點登出
附錄
參考教程:
Cas專題文章列表
springboot + shiro + cas4.2.7 實戰
HTTP
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。