筆記

          way

          CAS


          上面是CAS 基礎協議圖 

          CAS 介紹

          CAS 具有以下特點:

          • 開源的企業級單點登錄解決方案。
          • CAS Server 為需要獨立部署的 Web 應用。
          • CAS Client 支持非常多的客戶端(這里指單點登錄系統中的各個 Web 應用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

          CAS 原理和協議

          從結構上看,CAS 包含兩個部分: CAS Server 和 CAS Client。CAS Server 需要獨立部署,主要負責對用戶的認證工作;CAS Client 負責處理對客戶端受保護資源的訪問請求,需要登錄時,重定向到 CAS Server。

          CAS Client 與受保護的客戶端應用部署在一起,以 Filter 方式保護受保護的資源。對于訪問受保護資源的每個 Web 請求,CAS Client 會分析該請求的 Http 請求中是否包含 Service Ticket,如果沒有,則說明當前用戶尚未登錄,于是將請求重定向到指定好的 CAS Server 登錄地址,并傳遞 Service (也就是要訪問的目的資源地址),以便登錄成功過后轉回該地址。用戶在第 3 步中輸入認證信息,如果登錄成功,CAS Server 隨機產生一個相當長度、唯一、不可偽造的 Service Ticket,并緩存以待將來驗證,之后系統自動重定向到 Service 所在地址,并為客戶端瀏覽器設置一個 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新產生的 Ticket 過后,在第 5,6 步中與 CAS Server 進行身份合適,以確保 Service Ticket 的合法性。

          在該協議中,所有與 CAS 的交互均采用 SSL 協議,確保,ST 和 TGC 的安全性。協議工作過程中會有 2 次重定向的過程,但是 CAS Client 與 CAS Server 之間進行 Ticket 驗證的過程對于用戶是透明的。

          另外,CAS 協議中還提供了 Proxy (代理)模式,以適應更加高級、復雜的應用場景,具體介紹可以參考 CAS 官方網站上的相關文檔。

          在 Tomcat 上部署一個完整的 CAS Server 主要按照以下幾個步驟

          配置 Tomcat 使用 Https 協議

          如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 協議,其配置過程和配置方法可以參考 Tomcat 的相關文檔。不過在生成證書的過程中,會有需要用到主機名的地方,CAS 建議不要使用 IP 地址,而要使用機器名或域名。(項目過程中沒使用)

          部署 CAS Server

          CAS Server 是一個 Web 應用包,將前面下載的 cas-server-3.1.1-release.zip 解開,把其中的 cas-server-webapp-3.1.1.war 拷貝到 tomcat的 webapps 目錄,并更名為 cas.war。由于前面已配置好 tomcat 的 https 協議,可以重新啟動 tomcat,然后訪問:https://localhost:8443/cas(沒配置ssh應該是http://localhost:8080/cas) ,如果能出現正常的 CAS 登錄頁面,則說明 CAS Server 已經部署成功。

          雖然 CAS Server 已經部署成功,但這只是一個缺省的實現,在實際使用的時候,還需要根據實際概況做擴展和定制,最主要的是擴展認證 (Authentication) 接口和 CAS Server 的界面。

          參考http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html
          項目也采用jdbc驗證,文章介紹了三個基于 JDBC 的 AuthenticationHandler,我使用的cas-server 3.3 多了一個AbstractJdbcUsernamePasswordAuthenticationHandler 直接使用。

          部署客戶端應用

          單點登錄的目的是為了讓多個相關聯的應用使用相同的登錄過程,使用的是cas-client-core- 3.1.9.jar 放入要使用單點登錄項目的lib下。cas客戶端使用的是過濾器,在web.xml配置。可以使用spring配置bean。官方網站http://www.ja-sig.org/wiki/display/CASC/Configuring+the+JA- SIG+CAS+Client+for+Java+using+Spring 有配置。
          用類擴展 Cas20ProxyReceivingTicketValidationFilter復寫onSuccessfulValidation方法,寫入驗證成功后做的事情,比如把用戶信息放入session。寫了一個a.jsp用于跳轉,過濾器針對他,訪問這個頁面的時候,會到cas服務器端,如果成功的話,返回到a.jsp,這個頁面用sendRedirect調用了一個action方法處理登錄成功后直接進入項目首頁。

          posted on 2009-11-12 20:57 yuxh 閱讀(1266) 評論(0)  編輯  收藏 所屬分類: j2ee

          導航

          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          • 隨筆 - 48
          • 文章 - 0
          • 評論 - 2
          • 引用 - 0

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          收藏夾

          博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 光泽县| 武宣县| 民乐县| 大渡口区| 综艺| 杭州市| 宜城市| 高碑店市| 无锡市| 南丹县| 苍溪县| 临清市| 寻乌县| 浦江县| 南宫市| 白银市| 伽师县| 泸西县| 巢湖市| 双辽市| 塔城市| 曲阜市| 洛宁县| 江华| 吉安县| 宁都县| 三台县| 五大连池市| 舟山市| 双牌县| 静宁县| 延吉市| 大余县| 凤凰县| 疏勒县| 黄骅市| 龙井市| 厦门市| 漠河县| 屏东市| 大宁县|