一、認識CAS
首先,我們先來認識一下CAS這個技術。
CAS,英文全稱 Central Authentication Service 翻譯過來就是中央認證服務,這個技術是由國外一所知名的大學,耶魯大學所開源出來的一個項目,而且這個項目可謂是企業級的項目,很牛逼。
CAS這個技術是用來幹啥的,說起來很簡單,就是爲 Web 應用系統提供一種可靠的單點登錄方法。說到這裏,我們還要說一下單點登錄
單點登錄
單點登錄(SSO),英文全稱 Single Sign On,英譯漢就是單點登錄。
其實這四個字,主要是理解單點是什麼意思。知道了單點的意思,是吧,就全知道了。
我們先來說一下,在哪裏你用過,或者是見到過。
淘寶、天貓大家都不陌生吧,他們是阿里巴巴旗下的產品,我相信作爲22世紀的我們肯定都使用過。但是我們現在做一個這樣的操作,用一個瀏覽器同時打開天貓和淘寶,然後都不要登錄,我知道有手快的人,直接就登錄了,登錄了的話,就先退出。然後刷新以下網站,確定已經退出之後,你做這麼一個操作,先登錄淘寶,然後刷新網站,確定登錄之後,再進入天貓,不要登錄,直接刷新,你會發現,誒,沒有登錄的天貓居然也登錄上了。
這個就是我們要說的單點登錄。
是的,沒有看錯,這個圖標就是CAS的官網圖標啊,很漂亮
官網地址:https://www.apereo.org/projects/cas/
網站打開有點慢,是因爲是服務器主機在國外,耐心等等
CAS具體的一些介紹,大家可以直接百度百科,相對比較權威,url:百度百科_CAS
二、CAS原理
話不多說,先上圖,這個圖片也是從百度百科中搞下來的
很多人看到這個一臉矇蔽,不知道從哪裏看起,其實慢慢理解,總能會看的。
我們從user·s browser 這裏開始看,首先翻譯一下,這個意思是用戶瀏覽器,用戶打開瀏覽器之後呢,會訪問一些網站,忽然看到了你的網站,然後進來,正要準備進入你的網站的時候,我們的講述開始了。
首先,用戶請求你的服務器,也就是user·s browser 給你的服務器,也就是Your PHP Application 發送了一個請求,請求內容呢,就是想看一個什麼什麼圖片吧,比如說哈士奇的圖片,但是你的服務器中配置了CAS的過濾器,然後用戶請求直接被重定向到了CAS Server
CAS Server拿到請求一看,不行,沒有登錄,告訴用戶要登錄,這時候,用戶的瀏覽器窗口就打開了登錄窗口,然後呢,用戶輸入賬號、密碼、驗證碼,刷刷刷輸入完,點擊登錄,這時候,請求直接到了CAS Server這裏,CAS Server拿到了用戶輸入的賬號密碼啥的,開始去匹配,一看OK,沒錯,CAS Server就創建一個票,也就是ticket返回給用戶,存入瀏覽器中。截止到這裏,用戶從點擊登錄一直到CAS Server返回ticket ,用戶是感覺不到的。
用戶這裏拿到這個票之後,就繼續去訪問資源,也就是去看哈士奇的圖片,這時候的請求(這裏的請求是帶着剛剛返回的內個票的),是進入到了你的服務器中,你的服務器因爲過濾器,導致這次的這個請求還得去CAS Server,CAS Server拿到票一看,一驗證,發現沒錯,是它給的票,而且還有效,CAS Server就直接放行,然後用戶就看到了哈士奇。
直到看到了哈士奇,用戶纔有感覺,剛剛登錄成功了,而且看到了哈士奇,但是,中間這麼一大串步驟,用戶根本是不知道的。
ps:大家好好看幾遍這個流程,好好理解,理順了,別搞得懂一點不懂一點的。
然後我們繼續說,好比你還有一個網站,也是用的同一個CAS 服務器,那麼,用戶在訪問你另外的一個網站的時候,直接就帶上剛剛的票子去訪問你的網站。
之後的流程類似,過濾器過濾,CAS 拿到票,可以,有效,然後直接放行。
這個就是CAS 的整個服務流程,如果那裏錯誤,直接指出,我來修改。
三、搭建本地CAS
1.jdk版本 1.8 + (一定要1.8+,別弄個1.7來搞事情,沒有直接orcale下載java 14 版本,或者看我以前的博客弄個1.8,直接找我要也行)
2.tomcat 8+(同上,別弄個低版本的過來,直接告訴你,運行不了)
3. CAS Server的war包(下載地址:https://download.csdn.net/download/weixin_45908370/12259136)
(這個資源我是耗了一下午從官網上搞下來,費勁死了,主要下載慢,所以我就弄成5C幣收費資源了,你也可以自己去找只要版本對,你能找到,那就用你自己的,不強求)
我這個裏面已經把maven工程 和弄好的war包都給放進去了,下面的下載啊啥的,你就能免去等待的痛苦了。
CAS GitHub地址:https://github.com/apereo/cas-overlay-template
進入到這個github之後,可以看到有很多版本,我們爲啥選用5.3版本,是因爲這個是6.x一下最高的一個可以用maven打包的版本
當然,你也可以下載6.x的版本,只要你時間夠,網速好。
我這裏已經下載好了,我就不再去下載了,直接構建就好了,這裏構建有兩種方式。
方式一:eclipse構建
打開eclipse,然後導入剛剛的項目
然後導入之後,maven會自己去下載war包,但是就是有點慢。。
方式二:
cmd進入到剛剛下載的cas包中,輸入命令mvn clean package(前提你的電腦安裝了Maven,並且配置了Maven)
然後就是等待了。。
大概好一會,OK了,然後打開目錄
這個地方,這個就是我們要用到的CAS的war包。
接下來,把這個包仍在tomcat中
扔到這裏,然後進入tomcat bin目錄,運行一下
咚咚咚咚
好了,啓動之後,我們瀏覽器訪問一下這個項目
http://127.0.0.1:8080/cas/login
這個就是CAS 5.3版本的界面
然後我們試一下登錄
賬號:casuser
密碼:Mellon
截止到這裏,OK,項目搭建成功!