實踐Java
          Practice in Java
          posts - 6,  comments - 20,  trackbacks - 0
          (一) 初探CAS SSO


          相關概念:
                 
                  SSO英文全稱Single Sign On,單點登錄。SSO是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登錄映射到其他應用中用于同一個用戶的登錄的機制。它是目前比較流行的企業業務整合的解決方案之一。
                        
                 要實現SSO,需要以下主要的功能:
            1、所有應用系統共享一個身份認證系統。
            統一的認證系統是SSO的前提之一。認證系統的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認證;認證成功后,認證系統應該生成統一的認證標志(ticket),返還給用戶。另外,認證系統還應該對ticket進行效驗,判斷其有效性。
            2、所有應用系統能夠識別和提取ticket信息
            要實現SSO的功能,讓用戶只登錄一次,就必須讓應用系統能夠識別已經登錄過的用戶。應用系統應該能對ticket進行識別和提取,通過與認證系統的通訊,能自動判斷當前用戶是否登錄過,從而完成單點登錄的功能。

                   cas是耶魯大學開發的一個開源項目,含義為集中認證服務(Central Authentication Service),
          目標為:當耶魯大學有新的應用系統上線時,這個應用系統只需要配置使用cas來保護它的資源受限訪問,而不需要 這個應用系統本身再編寫安全方面的代碼。
           
          SSO相關的Ticket知識 


          資源準備

              Tomcat6
              CAS Server&Client
             
          http://www.ja-sig.org/downloads/cas/cas-server-3.1.1-release.zip
             http://www.ja-sig.org/downloads/cas-clients/cas-client-java-2.1.1.zip

           開始實踐

                  CAS Server 是一套基于 Java 實現的服務,該服務以一個 Java Web Application 單獨部署在與 servlet2.3 兼容的 Web 服務器上,另外,由于 Client 與 CAS Server 之間的交互采用 Https 協議,因此部署 CAS Server 的服務器還需要支持 SSL 協議。當 SSL 配置成功過后,像普通 Web 應用一樣將 CAS Server 部署在服務器上就能正常運行了,不過,在真正使用之前,還需要擴展驗證用戶的接口。 
                 
          (一) 創建證書
                首先對SSL的安全協議生成一個證書. 在CMD命令下依次執行下面命令或者放在一個bat文件中,一次執行.

          keytool -delete -alias tomcat -keypass changeit  -storepass changeit
          keytool -genkey -alias tomcat -keypass changeit -keyalg RSA -storepass changeit
          keytool -export -alias tomcat -keypass changeit  -file server.crt -storepass changeit
          keytool -delete -alias mykey -keypass changeit -storepass changeit -keystore 
          "C:/Program Files/Java/jdk1.5.0_10/jre/lib/security/cacerts"
          keytool -import -file  server.crt -keypass changeit -storepass changeit -keystore 
          "C:/Program Files/Java/jdk1.5.0_10/jre/lib/security/cacerts"

          這樣就生成了一個證書,并且導入進密鑰庫,相關證書的生成使用方法和命令的使用請使用百度 O(∩_∩)O哈哈~

                  在生成證書的時候會提示輸入CN,這里必須輸入域名,如果在本地請使用機器名或者localhost,不能用IP,否則部署不成功會出現下面的異常.       
          嚴重: edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator prox
          yList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://192.168.1.111:8443/cas/proxyValidate] ticket=[ST-0-9h7Mx5HK3pfsdxRv
          MD3y] service=[http%3A%2F%2F192.168.1.222%3A8080%2Fservlets-examples%2Fservlet%2FHelloWorldExample] renew=false]]]

                 這個CAS異常是從CAS Client里面拋出,是當我們不使用證書的CN去訪問域名的時候,CASClient無法信任,特別注意!!

          (二) 配置CASServer
               在Tomcat6目錄下配置支持https協議,修改 \Tomcat 6.0\conf\server.xml 文件,找到https段,如下配置

          1  <Connector protocol="org.apache.coyote.http11.Http11Protocol"
          2            port="8443" minSpareThreads="5" maxSpareThreads="75"
          3            enableLookups="true" disableUploadTimeout="true"
          4            acceptCount="100"  maxThreads="200"
          5            scheme="https" secure="true" SSLEnabled="true"
          6            keystoreFile="C:/Documents and Settings/Administrator/.keystore" keystorePass="changeit"
          7            truststoreFile="C:/Program Files/Java/jdk1.5.0_10/jre/lib/security/cacerts"
          8            clientAuth="false" sslProtocol="TLS"/>

                解壓cas-server-3.3-release.zip,并將\cas-server-3.0.5\cas-server-3.0.5\target\cas.war放到\Tomcat 6.0\webapps下
              然后啟動Tomcat6,在瀏覽器中輸入https://localhost:8443/cas 出現CASServer登錄界面,即CASServer配置成功.

          (三) 配置一個應用到CAS SSO中
              
                在應用工程中加入casclient.jar,修改web.xml,過濾器應配置在所有其他過濾器的前面

           1  <filter> 
           2         <filter-name>CASFilter</filter-name> 
           3         <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class> 
           4         <init-param> 
           5             <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name> 
           6             <param-value>https://soho:8443/cas/login</param-value> 
           7         </init-param> 
           8         <init-param> 
           9             <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name> 
          10             <param-value>https://soho:8443/cas/proxyValidate</param-value> 
          11         </init-param>      
          12         <init-param> 
          13             <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name> 
          14             <param-value>soho:8443</param-value> 
          15         </init-param> 
          16     </filter> 
          17     
          18     <filter-mapping> 
          19         <filter-name>CASFilter</filter-name> 
          20         <url-pattern>/*</url-pattern> 
          21     </filter-mapping> 


          啟動應用,輸入訪問應用的路徑會發現沒有經過CASServer的認證,不能直接訪問到,而跳到了CAS的登錄界面,登錄后才會被引導到正確的路徑.
           
          簡單的CAS SSO 初探成功,再來對他進行深入的使用!

          posted on 2009-03-10 11:55 弦驚塞外 閱讀(811) 評論(2)  編輯  收藏

          FeedBack:
          # re: Liferay Portal學習
          2009-09-07 14:07 | wacel
          請問你深入得怎么樣了?liferay與cas配置好以后,有一個portlet要加入到liferay里,怎么實現單點登陸???  回復  更多評論
            
          # re: Liferay Portal學習
          2011-03-10 16:39 | 12
          如果這是你copy的你就是個sb,如果是你自己寫的你就是個2  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2009年9月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(3)

          隨筆檔案

          相冊

          搜索

          •  

          積分與排名

          • 積分 - 6310
          • 排名 - 2843

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 松阳县| 星子县| 县级市| 五峰| 海南省| 萝北县| 平远县| 天峻县| 临清市| 蓝田县| 鄂尔多斯市| 巨鹿县| 洪江市| 吴川市| 贺兰县| 日土县| 通海县| 大英县| 洞口县| 内黄县| 四会市| 尚志市| 正定县| 迁安市| 田阳县| 漳浦县| 金平| 莱阳市| 景谷| 河南省| 巴里| 禹州市| 伊宁县| 普陀区| 百色市| 昌平区| 南康市| 邵东县| 扶绥县| 祁东县| 阳信县|