單點登錄CAS統一認證系統部署基於Redis緩存配置詳細方案

NoSQL Redis Memcached Tomcat 路人宅 2017-05-13

CAS ( Central Authentication Service ) 是 Yale 大學發起的一個企業級的、開源的項目,旨在為 Web 應用系統提供一種可靠的單點登錄解決方法(屬於 Web SSO )。

CAS集群部署首先需要考慮的是ticket票據統一存儲的問題,以便於達到每個節點訪問的一致性,官方雖然提供了基於memcached方式,但未提供基於Redis方式,項目中需要使用redis,因此仿照memcached方式,新建cas-server-integration-redis工程,來完成工作需求,下面小編就分享一下單點登錄CAS集群部署基於Redis緩存配置詳細步驟方案。

主要特性,具體如下:

1)開源的、多協議的 SSO 解決方案; Protocols : Custom Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、 SAML2.0 等。

2)支持多種認證機制: Active Directory 、 JAAS 、 JDBC 、 LDAP 、 X.509 Certificates 等;

3)安全策略:使用票據( Ticket )來實現支持的認證協議;

4)支持授權:可以決定哪些服務可以請求和驗證服務票據( Service Ticket );

5) 提 供高可用性:通過把認證過的狀態數據存儲在 TicketRegistry 組件中,這些組件有很多支持分佈式環境的實現, 如: BerkleyDB 、 Default 、 EhcacheTicketRegistry 、 JDBCTicketRegistry 、 JBOSS TreeCache 、 JpaTicketRegistry 、 MemcacheTicketRegistry 等;

6)支持多種客戶端: Java 、 .Net 、 PHP 、 Perl 、 Apache, uPortal 等。

1、構建cas-server-integration-redis工程

仿照cas-server-integration-memcached工程建立cas-server-integration-redis工程,pom.xml中添加redis的java客戶端jar包,去掉memcached中需要的jar,最後依賴包如下:

單點登錄CAS統一認證系統部署基於Redis緩存配置詳細方案

單點登錄CAS統一認證系統部署基於Redis緩存配置詳細方案

仿照MemCacheTicketRegistry.java類,定義RedisTicketRegistry.java類,此類是核心,它實現了TicketRegistry接口,具體代碼如下:

單點登錄CAS統一認證系統部署基於Redis緩存配置詳細方案

單點登錄CAS統一認證系統部署基於Redis緩存配置詳細方案

單點登錄CAS統一認證系統部署基於Redis緩存配置詳細方案

2、整合cas-server-webapp工程

修改cas-server-webapp工程中ticketRegistry.xml文件,替換掉DefaultTicketRegistry,同時註釋掉ticketRegistryCleaner相關所有定義,具體如下:

單點登錄CAS統一認證系統部署基於Redis緩存配置詳細方案

使用Redis作為ticket票據的存儲,需要將原來的配置給註釋掉否則啟動時報錯,具體註釋掉的配置如下圖:

單點登錄CAS統一認證系統部署基於Redis緩存配置詳細方案

在POM.xml中添加cas-server-integration-redis模塊:

單點登錄CAS統一認證系統部署基於Redis緩存配置詳細方案

此時CAS配置完畢,啟動所有相關服務器即可使用,下面說說tomcat session集群同步的問題

3、tomcat session集群同步

保證多個實例下,session中的狀態以及票據存儲狀態,是一致的,通過網絡上查找資料,實現tomcat session集群同步可以採用開源的tomcat-redis-session-manager,git hub地址為:https://github.com/jcoleman/tomcat-redis-session-manager,注意使用的JDK是JDK1.7,服務器使用的是tomcat7

源碼參考資料:

http://blog.yoodb.com/yoodb/article/detail/1221

1)拷貝編譯打包之後的tomcat-redis-session-manager-VERSION.jar,jedis-2.7.2.jar,commons-pool2-2.2.jar到tomcat/lib目錄下

2)修改Tomcat context.xml (or the context block of the server.xml if applicable.)

單點登錄CAS統一認證系統部署基於Redis緩存配置詳細方案

到此為止,CAS集群部署工作完畢,歡迎大家有什麼不瞭解的或者不懂,有什麼疑難問題,儘可留言。

相關推薦

推薦中...