CONAN ZONE

          你越掙扎我就越興奮

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            0 Posts :: 282 Stories :: 0 Comments :: 0 Trackbacks
          CAS (Central Authentication Service)是Yale大學的ITS開發的一套JAVA實現的開源
          的SSO(single sign-on)的服務,CAS 分為服務端和客戶端,在服務端開啟SSL,服務器下發證書安裝到各個客戶端中,客戶端在與服務器進行通訊驗證時,將檢驗二者的證書是否一致。

          STEP 1,搭建Java Web服務器環境
          安裝 JDK + Tomcat 6.0.14 , HTTP端口8080 , HTTPS端口8443
          JAVA_HOME = D:\Java\jdk1.6.0_04
          CATALINA_HOME = D:\Java\apache-tomcat-6.0.14
          安裝完畢,啟動Tomcat ,在瀏覽器上 測試 http://Linly:8080/

          出現上述界面,表明系統STEP1成功搭建。

          STEP 2,使用Java Keytool工具為系統生成HTTPS證書,并為系統注冊
          (Java Keytool相關資料可參閱:Java keytool 安全證書學習筆記), 在DOS窗體運行以下指令(建議編寫一個BAT批處理文件執行)
          [quote]
          cls
          rem please set the env JAVA_HOME before run this bat file
          rem delete alia tomcat if it is existed
          keytool -delete -alias tomcatsso -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
          keytool -delete -alias tomcatsso -storepass changeit
          (注釋: 清除系統中可能存在的名字為tomcatsso 的同名證書)
          rem list all alias in the cacerts
          keytool -list -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
          (注釋: 列出系統證書倉庫中存在證書名稱列表)
          rem generator a key
          keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=linly" -storepass changeit
          (注釋:指定使用RSA算法,生成別名為tomcatsso的證書,存貯口令為changeit,證書的DN為"cn=linly" ,這個DN必須同當前主機完整名稱一致哦,切記!!!)rem export the key
          keytool -export -alias tomcatsso -file %java_home%/jre/lib/security/tomcatsso.crt -storepass changeit
          (注釋: 從keystore中導出別名為tomcatsso的證書,生成文件tomcatsso.crt)rem import into trust cacerts
          keytool -import -alias tomcatsso -file %java_home%/jre/lib/security/tomcatsso.crt -keystore %java_home%/jre/lib/security/cacerts -storepass changeit
          (注釋:將tomcatsso.crt導入jre的可信任證書倉庫。注意,安裝JDK是有兩個jre目錄,一個在jdk底下,一個是獨立的jre,這里的目錄必須同Tomcat使用的jre目錄一致,否則后面Tomcat的HTTPS通訊就找不到證書了)
          rem list all alias in the cacerts
          keytool -list -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
          (注釋:列出jre可信任證書倉庫中證書名單,驗證先前的導入是否成功,如果導入成功,應該在列表中能找到tomcatsso這個別名,如下圖)[/quote]

          同時,在D:\Java\jdk1.6.0_04\jre\lib\security目錄下能找到“tomcatsso.crt”這個文件;在C:\Documents and Settings\Linly目錄下能找到“.keystore”文件。
          滿足上述條件則STEP2部署完成。

          STEP 3,配置Tomcat的HTTPS服務
          編輯D:\Java\apache-tomcat-6.0.14\conf下的server.xml文件,在connector的配置位置添加以下的配置:
          [quote]<Connector protocol="org.apache.coyote.http11.Http11Protocol"
          port="8443" minSpareThreads="5" maxSpareThreads="75"
          enableLookups="true" disableUploadTimeout="true"
          acceptCount="100" maxThreads="200"
          scheme="https" secure="true" SSLEnabled="true"
          keystoreFile="C:/Documents and Settings/new/.keystore" keystorePass="changeit"
          truststoreFile="D:/Java/jdk1.6.0_04/jre/lib/security/cacerts"
          clientAuth="false" sslProtocol="TLS"/>[/quote]

          啟動Tomcat,訪問https://linly:8443/,出現以下界面說明HTTPS配置生效:


          STEP 4,為HelloWorldExample程序配置CAS過濾器
          訪問http://linly:8080/examples/servlets/servlet/HelloWorldExample,出現以下界面說明應用正常啟動:

          編輯D:\Java\apache-tomcat-6.0.14\webapps\examples\WEB-INF下的web.xml文件,添加如下信息:
          [quote]<filter>
          <filter-name>CAS Filter</filter-name>
          <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
          <init-param>
          <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
          <param-value>https://Linly:8443/cas/login</param-value>
          </init-param>
          <init-param>
          <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
          <param-value>https://Linly:8443/cas/serviceValidate</param-value>
          </init-param>
          <init-param>
          <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
          <param-value>Linly:8080</param-value>
          </init-param>
          </filter>
          [/quote]

          [quote]
          <filter-mapping>
          <filter-name>CAS Filter</filter-name>
          <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>
          </filter-mapping>
          [/quote]

          拷貝casclient.jar文件到目錄D:\Java\apache-tomcat-6.0.14\webapps\examples\WEB-INF\lib下。
          由于我們使用的是Tomcat6.0.14,因此,還要拷貝commons-logging-1.0.4.jar到該目錄下。

          STEP 5,部署JA-SIG(CAS)服務器
          拷貝cas.war到D:\Java\apache-tomcat-6.0.14\webapps目錄下。啟動Tomcat,訪問網址http://linly:8080/cas/index.jsp,出現以下畫面:

          輸入用戶名/密碼 :linly/linly(任意兩個相同的字竄),點擊“登錄”,出現以下畫面:

          表示CAS服務器配置運行成功。


          STEP 6,測試JA-SIG(CAS)部署結果
          啟動Tomcat。
          測試使用瀏覽器登陸以下網址:http://linly:8080/examples/servlets/servlet/HelloWorldExample,頁面將彈出以下認證框,點擊“確定”


          頁面將重定向到JA-SIG的SSO登錄認證頁面



          輸入用戶名=密碼,如:linly/linly,則通過驗證,進入應用的入口界面,如下:


          細心的用戶將發現,此時的URL不再是:
          http://linly:8080/examples/servlets/servlet/HelloWorldExample,
          URL的尾端帶上了一個ticket參數:
          http://linly:8080/examples/servlets/servlet/HelloWorldExample?ticket=ST-2-qTcfDrdFb0bWndWgaqZD
          到此,JA-SIG(CAS)服務器的初步SSO部署宣告成功
          posted on 2008-06-29 22:21 CONAN 閱讀(220) 評論(0)  編輯  收藏 所屬分類: J2EE
          主站蜘蛛池模板: 昌平区| 无极县| 汝阳县| 吉安市| 七台河市| 吴旗县| 逊克县| 崇信县| 双城市| 浪卡子县| 襄汾县| 茂名市| 阳江市| 扶沟县| 泉州市| 大洼县| 长春市| 中超| 乃东县| 东方市| 营口市| 忻城县| 宜兴市| 河东区| 崇阳县| 海晏县| 章丘市| 礼泉县| 富裕县| 津市市| 田阳县| 沁阳市| 西和县| 象山县| 巧家县| 肃北| 磴口县| 湖州市| 海林市| 嘉荫县| 屯留县|