服務(wù)端配置 cas是個好東西,很靈活很好用,但是配置起來很麻煩,網(wǎng)上資料比較零碎。不弄個三五天根本不知道其中的原理,終于在多天的奮斗中配置成功,現(xiàn)在將配置的一些過程記錄下來供大家參考。
cas官方網(wǎng)站
http://www.jasig.org/cas
下載最新的服務(wù)端 CAS Server 3.3.3 Final
解壓后將modules下面的cas-server-webapp-3.3.3.war部署到web服務(wù)器,作為單點登錄的服務(wù)器。
登錄的服務(wù)器下面很多配置文件,通過配置可以做一些擴展。
修改點1:驗證方式使用我們自己的用戶表驗證
cas和當(dāng)前已有的系統(tǒng)做集成的入口
1.修改deployerConfigContext.xml文件
添加數(shù)據(jù)源配置
XML/HTML代碼
定義MD5的加密方式
配置authenticationManager下面的authenticationHandlers屬性
修改點2:獲取用戶信息保存,方便各個客戶端可以統(tǒng)一得到用戶信息
1.定義attributeRepository,通過jdbc查詢用戶的詳細信息,可以把用戶表或用戶的所屬組織機構(gòu)或角色等查詢出來。
2.配置authenticationManager中credentialsToPrincipalResolvers屬性
注意:默認(rèn)cas登錄服務(wù)器沒有把用戶信息傳到客戶端中,所以要修改WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp文件,增加
修改點3:用數(shù)據(jù)庫來保存登錄的會話
這樣服務(wù)器在重新啟動的時候不會丟失會話。
1.修改ticketRegistry.xml文件
將默認(rèn)的ticketRegistry改成
配置完之后還需要一些jar的支持,根據(jù)提示那些包缺少到網(wǎng)上找。
修改點4:配置remenber me的功能,可以讓客戶端永久保存session
authenticationManager增加authenticationMetaDataPopulators屬性
修改點5:取消https驗證
在網(wǎng)絡(luò)安全性較好,對系統(tǒng)安全沒有那么高的情況下可以取消https驗證,使系統(tǒng)更加容易部署。
1.修改ticketGrantingTicketCookieGenerator.xml
p:cookieSecure改成false,客戶端web.xml中單獨服務(wù)器的鏈接改成http
使用https協(xié)議的配置
1.證書生成和導(dǎo)入
下面是一個生成證書和導(dǎo)入證書的bat腳本,如果web應(yīng)用和單獨登錄服務(wù)器部署在同一臺機可以一起執(zhí)行
C++代碼
3.將.keystore文件拷貝到tomcat的conf目錄下面,注意.keystore會在證書生成的時候生成到系統(tǒng)的用戶文件夾中,如windows會生產(chǎn)到C:\Documents and Settings\[yourusername]\下面
2.配置tomcat,把https協(xié)議的8443端口打開,指定證書的位置。
客戶端配置
cas官方網(wǎng)站上面的客戶端下載地址比較隱秘,沒有完全公開,具體地址為
http://www.ja-sig.org/downloads/cas-clients/
下載最新的cas-client-3.1.6-release.zip
1.解壓后把modules下面的包放到我們的web應(yīng)用中
2.配置web.xml,注意encodingFilter要提前配置,不然會出現(xiàn)數(shù)據(jù)插入數(shù)據(jù)庫的時候有亂碼。
serverName是我們web應(yīng)用的地址和端口
3.導(dǎo)入證書,如果不用https的話,這步可以跳過,把tomcatsso.crt證書拷貝到c盤下面,在jdk的bin目錄下面運行下面的語句。
JavaScript代碼
客戶端獲取登錄用戶名和用戶信息實例
Java代碼
posted on 2009-10-20 23:58 paulwong 閱讀(4596) 評論(6) 編輯 收藏 所屬分類: J2EE
樓主寫的非常詳細,這是到現(xiàn)在為止我看到最全的cas配置文檔了。 正需要這些信息呢,謝謝了! :) 回復(fù) 更多評論
學(xué)習(xí) 回復(fù) 更多評論
寫的非常棒,找了半個月你的是最詳細的。非常實用。 回復(fù) 更多評論
<c:if test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes) > 0}"> <cas:attributes> <c:forEach var="attr" items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}"> <cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}> </c:forEach> </cas:attributes> </c:if> 這個文件拷進去,是錯的,但是我修改后,用戶信息也出不來,郁悶ing 回復(fù) 更多評論
到底怎么樣實現(xiàn)只登錄一次啊。。。還是沒看到具體的最后得到用戶信息這個東西有撒子用處? 回復(fù) 更多評論
哥哥,,522196314 能加我嗎。。。崇拜你 回復(fù) 更多評論
Powered by: BlogJava Copyright © paulwong