爲什麼要做這個嘗試?
微服之道,方興未艾;農之來學者,蓋已千者!
這句是從《陶山集·太學案問》瞎改出來的。意思就是微服務的架構理念還在不斷地發展,現在整個啥都 言必出微服務,差點都到了 沒學過微服務的碼農不是一個好碼農
。搞到微服務這個詞都快跟區塊鏈差不多臭了。
在將臭未臭之前,我們趕緊把其中的統一認證這塊過一下。
在微服務的概念中,恨不得每一個API都起一個獨立的微服務,所有一個系統有幾十個,甚至成百上千個獨立的微服務也不見怪。 而安全又是每一個服務都必須面對的問題!如果讓每一個微服務都獨立處理的話,那Martin Fowler估計早就被碼農拉去祭天了。所以統一認證大勢所趨,將安全有關的認證與授權集中到一個服務中進行處理,各個微服務只需簡單校驗即可,無需另起爐竈!
統一認證的開源實現有很多,目前比較出名的有Apereo CAS (發音爲 /kæ's/),Keycloak等,我們儘量都介紹到,今天先看一下Apereo CAS
什麼是Apereo CAS
首先CAS是Central Authentication Service的首字母縮寫,Apereo CAS 是由耶魯大學實驗室2002年出的一個開源的統一認證服務。
據官網介紹,Apereo CAS是一個開源的企業級單點登錄系統,包括瞭如下特性:
- 基於SpringBoot開發的Java系統
- 一個開放且各種手冊齊全的協議
- 以可插拔的形式支持各種認證協議(LDAP, database, X.509, 2-factor)
- 支持各種認證協議(CAS, SAML, OAuth, OpenID)
- 各種客戶端應有盡有(Java, .Net, PHP, Perl, Apache, uPortal)
- 跟各種 不大出名 的系統集成 (uPortal, BlueSocket, TikiWiki, Mule, Liferay, Moodle)
- 社區文檔大把,有問題就吹街
Apereo CAS的架構與組成
碼農上手一個新東西,第一時間還不趕緊把它的架構摟兩眼
從這個圖可以看到,Apereo CAS主要組成就兩大組件,一個服務器端,還有各種語言的客戶端。
應用程序通過CAS的客戶端,攔截校驗用戶請求是否通過認證,如果尚未認證,則重定向到CAS服務端的用戶登錄頁面進行登錄,登錄成功後,會生成一個ticket給迴應用程序,下次用戶請求帶着這個ticket就所向無阻。
Apereo CAS的歷史
前面說了Apereo CAS是耶魯大學Technology and Planning實驗室的Shawn Bayern 在2002年出的一個開源系統。剛開始名字叫Yale CAS。 Yale CAS 1.0的目標只是一個單點登錄的系統,隨着慢慢用開,功能就越來越多了,2.0就提供了多種認證的方式。目前版本爲6.0
2004年12月,CAS轉成JASIG(Java Administration Special Interesting Group)的一個項目,項目也隨着改名爲 JASIG CAS,這就是爲什麼現在有些CAS的鏈接還是有jasig的字樣。
2012年,JASIG跟Sakai基金會合並,改名爲Apereo基金會,所有CAS也隨着改名爲Apereo CAS.
看起來這娃也不容易,嫁雞隨雞,名字都改了3次了。
結論?
關於Apereo CAS能不能用的結論這裏先不下,等到後面介紹安裝部署集成的文章寫完再一起看看。 這次我們先看看Apereo CAS官網出的一幅圖,這張圖片介紹了Apereo的組成以及支持的各種協議,各種特性,不煩看看