作者:藍雄威,叩丁狼教育高級講師。原創(chuàng)文章,轉載請注明出處。
一、什么是什么是CAS
CAS(Central Authentication Service) 是 Yale (耶魯)大學發(fā)起的開源的企業(yè)級單點登錄系統(tǒng)。它的特點:
- Java (Spring Webflow/Spring Boot) 服務組件
- 可插拔身份驗證支持(LDAP,Database,X.509,MFA)
- 支持多種協(xié)議(CAS,SAML,OAuth,OpenID,OIDC)
- 跨平臺客戶端支持(Java,.Net,PHP,Perl,Apache等)
- 與uPortal,Liferay,BlueSocket,Moodle,Google Apps等集成
分為CAS Server服務端和CAS Client客戶端:
CAS Server:
CAS Server 負責完成對用戶的認證工作, CAS Server 需要獨立部署,有不止一種 CAS Server 的實現, Yale CAS Server 和 ESUP CAS Server 都是很不錯的選擇。
CAS Server 會處理用戶名 / 密碼等憑證 (Credentials) ,它可能會到數據庫檢索一條用戶帳號信息,也可能在 XML 文件中檢索用戶密碼,對這種方式, CAS 均提供一種靈活但同一的接口 / 實現分離的方式, CAS 究竟是用何種認證方式,跟 CAS 協(xié)議是分離的,也就是,這個認證的實現細節(jié)可以自己定制和擴展.
CAS Client:
CAS Client 負責部署在客戶端(注意,我是指 Web 應用),原則上, CAS Client 的部署意味著,當有對本地 Web 應用的受保護資源的訪問請求,并且需要對請求方進行身份認證, Web 應用不再接受任何的用戶名密碼等類似的 Credentials ,而是重定向到 CAS Server進行認證。
目前, CAS Client 支持(某些在完善中)非常多的客戶端,包括 Java 、 .Net 、 ISAPI 、 Php 、 Perl 、 uPortal 、 Acegi 、 Ruby 、VBScript 等客戶端,幾乎可以這樣說, CAS 協(xié)議能夠適合任何語言編寫的客戶端應用。
二、https的配置
為了提高安全性,要求和CAS服務器的所有通信必須發(fā)生在一個安全的通道.所以服務端的數據傳輸需要使用https協(xié)議.
https能做什么同學們可以百度一下,在此就不做過多延伸.
步驟如下:
1.生成服務器的密匙文件wolfcode.keystore
keytool -genkey -alias wolfcode -keyalg RSA -keysize 2048 -validity 36500 -keystore D:/keys/wolfcode.keystore
參數說明:
- genkey 生成密鑰
- keyalg 指定密鑰算法,這時指定RSA,
- keysize 指定密鑰長度,默認是1024位,這里指定2048,長一點,比較難破解,
- validity 指定證書有效期,這里指定36500天.
- alias 指定別名,這里是wolfcode
- keystore 指定密鑰庫存儲位置,這里存在 D:/keys/目錄下
注意:您的名字與姓氏www.sso.com是CAS服務器使用的域名,不是隨便亂定的,其他的隨意.

2.導出證書:
keytool -export -alias wolfcode -storepass 123456 -file D:/keys/wolfcode.cer -keystore D:/keys/wolfcode.keystore
參數說明:
- alias指定別名為wolfcode ;
- storepass指定私鑰為123456;
- file指定導出證書的文件名為wolfcode.cer;
- keystore指定之前生成的密鑰文件的文件名。
注意:-alias和-storepass必須為生成wolfcode .keystore密鑰文件時所指定的別名和密碼,否則證書導出失敗.

3.導入證書導入到jdk信任庫
keytool -import -alias wolfcode -keystore C:/"Program Files"/Java/jdk1.8.0_144/jre/lib/security/cacerts -file D:/keys/wolfcode.cer -trustcacerts
注意:
1.原來的$JAVA_HOME/jre/lib/security/cacerts文件要先刪掉,否則會報出java.io.IOException: Keystore was tampered with, or password was incorrect錯誤.
2.如果路徑有空格或特殊字符,像我上面一樣加上引號.

如果到這步都沒問題,說明https配置好了.接下來就搭建CAS Server服務端
?