cas單點登錄配置速成
服務端配置
cas是個好東西,很靈活很好用,但是配置起來很麻煩,網上資料比較零碎。不弄個三五天根本不知道其中的原理,終于在多天的奮斗中配置成功,現在將配置的一些過程記錄下來供大家參考。
cas官方網站
http://www.jasig.org/cas
下載最新的服務端 CAS Server 3.3.3 Final
解壓后將modules下面的cas-server-webapp-3.3.3.war部署到web服務器,作為單點登錄的服務器。
登錄的服務器下面很多配置文件,通過配置可以做一些擴展。
修改點1:驗證方式使用我們自己的用戶表驗證
cas和當前已有的系統做集成的入口
1.修改deployerConfigContext.xml文件
添加數據源配置
XML/HTML代碼














定義MD5的加密方式
XML/HTML代碼




配置authenticationManager下面的authenticationHandlers屬性
XML/HTML代碼





修改點2:獲取用戶信息保存,方便各個客戶端可以統一得到用戶信息
1.定義attributeRepository,通過jdbc查詢用戶的詳細信息,可以把用戶表或用戶的所屬組織機構或角色等查詢出來。
XML/HTML代碼
























2.配置authenticationManager中credentialsToPrincipalResolvers屬性
XML/HTML代碼




注意:默認cas登錄服務器沒有把用戶信息傳到客戶端中,所以要修改WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp文件,增加
XML/HTML代碼











修改點3:用數據庫來保存登錄的會話
這樣服務器在重新啟動的時候不會丟失會話。
1.修改ticketRegistry.xml文件
將默認的ticketRegistry改成
XML/HTML代碼

































配置完之后還需要一些jar的支持,根據提示那些包缺少到網上找。
修改點4:配置remenber me的功能,可以讓客戶端永久保存session
1.修改deployerConfigContext.xml文件
authenticationManager增加authenticationMetaDataPopulators屬性
XML/HTML代碼






2.修改cas-servlet.xml
修改authenticationViaFormAction配置變成
XML/HTML代碼







增加UsernamePasswordCredentialsValidator
XML/HTML代碼


修改ticketExpirationPolicies.xml,grantingTicketExpirationPolicy配置如下,注意時間要加大,不然session很容易過期,達不到remember me的效果。
XML/HTML代碼













修改點5:取消https驗證
在網絡安全性較好,對系統安全沒有那么高的情況下可以取消https驗證,使系統更加容易部署。
1.修改ticketGrantingTicketCookieGenerator.xml
XML/HTML代碼






p:cookieSecure改成false,客戶端web.xml中單獨服務器的鏈接改成http
使用https協議的配置
1.證書生成和導入
下面是一個生成證書和導入證書的bat腳本,如果web應用和單獨登錄服務器部署在同一臺機可以一起執行
C++代碼































3.將.keystore文件拷貝到tomcat的conf目錄下面,注意.keystore會在證書生成的時候生成到系統的用戶文件夾中,如windows會生產到C:\Documents and Settings\[yourusername]\下面
2.配置tomcat,把https協議的8443端口打開,指定證書的位置。
XML/HTML代碼







客戶端配置
cas官方網站上面的客戶端下載地址比較隱秘,沒有完全公開,具體地址為
http://www.ja-sig.org/downloads/cas-clients/
下載最新的cas-client-3.1.6-release.zip
1.解壓后把modules下面的包放到我們的web應用中
2.配置web.xml,注意encodingFilter要提前配置,不然會出現數據插入數據庫的時候有亂碼。
serverName是我們web應用的地址和端口
XML/HTML代碼




































































































































3.導入證書,如果不用https的話,這步可以跳過,把tomcatsso.crt證書拷貝到c盤下面,在jdk的bin目錄下面運行下面的語句。
JavaScript代碼







客戶端獲取登錄用戶名和用戶信息實例
Java代碼




posted on 2009-10-20 23:58 paulwong 閱讀(4592) 評論(6) 編輯 收藏 所屬分類: J2EE