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


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

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


          資源準(zhǔn)備

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

          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"

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

                  在生成證書的時候會提示輸入CN,這里必須輸入域名,如果在本地請使用機(jī)器名或者localhost,不能用IP,否則部署不成功會出現(xiàn)下面的異常.       
          嚴(yán)重: 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里面拋出,是當(dāng)我們不使用證書的CN去訪問域名的時候,CASClient無法信任,特別注意!!

          (二) 配置CASServer
               在Tomcat6目錄下配置支持https協(xié)議,修改 \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 出現(xiàn)CASServer登錄界面,即CASServer配置成功.

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

           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> 


          啟動應(yīng)用,輸入訪問應(yīng)用的路徑會發(fā)現(xiàn)沒有經(jīng)過CASServer的認(rèn)證,不能直接訪問到,而跳到了CAS的登錄界面,登錄后才會被引導(dǎo)到正確的路徑.
           
          簡單的CAS SSO 初探成功,再來對他進(jìn)行深入的使用!

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

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

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


          網(wǎng)站導(dǎo)航:
           

          <2011年3月>
          272812345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(3)

          隨筆檔案

          相冊

          搜索

          •  

          積分與排名

          • 積分 - 6338
          • 排名 - 2841

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 仲巴县| 那曲县| 华容县| 高平市| 双牌县| 晴隆县| 黄梅县| 乌拉特中旗| 天津市| 平塘县| 台安县| 新田县| 台东县| 黔南| 阿图什市| 济阳县| 水富县| 灵山县| 普安县| 雅江县| 阜平县| 吉木萨尔县| 如皋市| 乌拉特后旗| 九台市| 朝阳县| 堆龙德庆县| 虎林市| 深泽县| 崇左市| 阿城市| 肃北| 光山县| 朝阳市| 三原县| 泉州市| 盐源县| 青海省| 贡山| 巴彦县| 余干县|