CAS SSO單點登錄實例詳細步驟

 

CAS_SSO單點登錄實例詳細步驟()Tomcatssl(https)配置

(Central Authentication Service)

http://desert3.iteye.com/blog/1700335

 

http://www.mossle.com/docs/auth/html/ch103-cas.html

 

 

第一步
1、用keytool生成證書:

命令:
       
keytool -genkey -alias sjc-keyalg RSA -keystore c:/store/mykey
說明:
   
這裏-alias sjc是表示生成的這個證書的別名叫sjc-keyalgRSA 指的是採用的RSA算法,-keystorec:/store/mykey是指生成的證書存儲的位置。回車後會提示你輸入keystorepassword,這可以自己定(這裏輸入sunjuncai,下面配tomcat時要用的),然後是一些個人信息及組織信息,可以輕鬆搞定。
注意:密碼輸入後,會讓你輸入其他信息,記得這裏第一個姓名必須是服務器的域名這裏我輸入的是完整計算機名稱:gaofeng.nmc.hamcc

 


這裏要注意如果不這樣寫就會報如下異常:
java.io.IOException: HTTPS hostname wrong:  should be<localhost>

 

 

實戰:

C:\Documents and Settings\wangyoushi8>keytool -genkey -alias sjc-keyalg RSA -keystore c:/store/mykey

輸入keystore密碼: sunjuncai

您的名字與姓氏是什麼?

 [Unknown] gaofeng.nmc.hamcc

您的組織單位名稱是什麼?

 [Unknown] 上海神洲數港

您的組織名稱是什麼?

 [Unknown] 網絡優化

您所在的城市或區域名稱是什麼?

 [Unknown] 鄭州

您所在的州或省份名稱是什麼?

 [Unknown] 河南

該單位的兩字母國家代碼是什麼

 [Unknown] ZH

CN= gaofeng.nmc.hamcc, OU=上海神洲數港, O=網絡優化, L=鄭州, ST=河南, C=ZH 正確嗎?

 [] y

輸入<sjc>的主密碼

       (如果和 keystore密碼相同,按回車):

 

 

2、創建證書後,就導出證書:

命令:

keytool -export -file c:/store/server.crt -alias sjc -keystore c:/store/mykey

說明:

c:/store/mykey裏取出證書入到c:/store/,如果沒有指定,就是存放在目錄下C:\Documentsand Settings\用戶目錄名\

實戰:

C:\Documents and Settings\wangyoushi8>keytool -export -filec:/store/server.crt -alias sjc -keystore C:/store/mykey

輸入keystore密碼: sunjuncai

保存在文件中的認證 <c:/store/server.crt>

 

 

3、爲客戶端的JVM導入密鑰:

命令:

       keytool -import -keystoreD:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -alias sjc

說明:

注意:輸入密碼時密碼爲"changeit",這是默認密碼.

特別說明:這個D:/jdk1.5.0_12/jre/lib/security/cacerts是指JDKJRE路徑下的lib目錄.

至此,第一步完成。

實戰:

C:\Documents and Settings\wangyoushi8>

keytool -import -keystore D:/jdk1.5.0_12/jre/lib/security/cacerts-file c:/store/server.crt -alias sjc

輸入keystore密碼: changeit

Owner: CN=localhost, OU=上海神洲數港, O=網絡優化, L=鄭州, ST=河南, C=Zh

發照者: CN=localhost, OU=上海神洲數港, O=網絡優化, L=鄭州, ST=河南, C=Zh

序號: 4abd6dd0

有效期間: Sat Sep 26 09:26:40 CST 2009至: Fri Dec 25 09:26:40 CST 2009

認證指紋:

        MD5 F7:19:E9:F8:53:08:B0:15:E7:A4:46:6D:1E:8A:F4:2B

        SHA1 09:ED:CF:67:D0:F5:C0:A4:96:1D:B1:A3:68:D3:2C:9F:FF:1B:7F:DE

信任這個認證? [] y

認證已添加至keystore

修改服務端Tomcat配置文件,(Tomcat安裝路徑下的conf/server.xml使用編輯工具顯示行號在95行處取消註釋)即可啓用SSL如下:

<Connector port="8443"maxHttpHeaderSize="8192"  

         maxThreads="150"minSpareThreads="25" maxSpareThreads="75"  

         enableLookups="false"disableUploadTimeout="true"  

         acceptCount="100" scheme="https"secure="true"  

         clientAuth="false" sslProtocol="TLS"

         keystoreFile="c:/store/mykey"

         keystorePass="sunjuncai"/>

只需修改綠色部分。

完成以上兩步,測試一下:

重啓Tomcat後在地址欄輸入https://localhost:8443如果瀏覽器顯示:

 

可以把localhost用本機IP地址,如https://10.87.59.162:8443/試試。如果配置正確就搞定了,瀏覽顯示的時候提示安裝證書。瀏覽器的狀態欄會顯示如圖所示:

解決辦法:

a.查看Host文件,c:\windows\system32\drivers\etc\hosts,打開hosts這個文件,看看127.0.0.1localhost是不是在一行。

b.是否用了代理服務器上網,選中“對於本地址不使用代理服務器。

 

部署CAS應用

a.CAS服務端的配置

CAS Server的下載http://www.jasig.org/cas/download

CAS Server安裝
\cas-server-3.3.3-release\cas-server-3.3.3\modules\cas-server-webapp-3.3.3.warcopytomcat\webapps下重命名爲cas;

重啓Tomcat,,檢查 CAS應用是否正常啓動。在地址欄輸入https://localhost:8443/cas如瀏覽器顯示:

默認的casserver的驗證是隻要用戶名和密碼一樣就可以成功登錄。如圖:

b.CAS客戶端配置
CAS Client的下載  http://www.ja-sig.org/downloads/cas-clients/
\cas-client-java-2.1.1\dist\casclient.jarcopy到你所發佈的webappWEB-INF/lib

在客戶端web應用中修改WEB-INF/web.xml在裏面添加過濾器

<!--用於單點退出 -->

      <listener>

<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>

      </listener>

      <filter>

             <filter-name>CASSingle Sign Out Filter</filter-name>

             <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>

      </filter>

      <!-- 用於單點登錄 -->

      <filter>

             <filter-name>CASFilter</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://localhost:8443/cas/login</param-value>

                    <!--這裏的server是服務端的IP-->

             </init-param>

             <init-param>

                    <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>

                    <param-value>https://gaofeng.nmc.hamcc:8443/cas/proxyValidate</param-value>

                    <!--這裏的ServerName是服務端的主機名也就是CN-->

             </init-param>

             <init-param>

                    <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>

                    <param-value>localhost:8080</param-value>

<!--client:port就是需要cas需要攔截的地址和端口,一般就是這個tomcat所啓動的ipport-->

             </init-param>

      </filter>

      <filter-mapping>

             <filter-name>CASSingle Sign Out Filter</filter-name>

             <url-pattern>/*</url-pattern>

      </filter-mapping>

      <filter-mapping>

             <filter-name>CASFilter</filter-name>

             <url-pattern>/*</url-pattern>

      </filter-mapping>

</web-app>

到此爲止,基本配置已經告一段落。(完成),如遇到什麼問題,請致信給:Todaysjc.

定製和擴展1:通過直接訪問數據庫定製密碼驗證

1.新建Mysql數據庫cas,筆者的數據庫用戶名是root,密碼爲空。新建文本文件,命名爲cas.sql

/*

MySQL Data Transfer

Source Host: localhost

Source Database: cas

Target Host: localhost

Target Database: cas

Date: 2009-10-9 18:08:58

*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for user

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

 `username` varchar(255) NOTNULL,

 `password` varchar(255) NOTNULL

) ENGINE=InnoDB DEFAULT CHARSET=gbk;

 

-- ----------------------------

-- Records

-- ----------------------------

INSERT INTO `user` VALUES ('1', '1');

2. 加入包到webapps\cas\WEB-INF\lib:

mysql-connector-java-5.1.5-bin.jar

cas-server-support-jdbc-3.3.1.jar(來自於cas-server-3.3.1.zip)

spring-jdbc-2.5.5.jar

3. webapps\cas\WEB-INF\deployerConfigContext.xml文件中加入dateSourceBean

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
          <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
          <property name="url"><value>jdbc:mysql://localhost:3306/cas</value></property>
          <property name="username"><value>root</value></property>
          <property name="password"><value></value></property>
</bean>

4. deployerConfigContext.xml文件中

註釋掉:

      <beanclass="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePassword
AuthenticationHandler" />

換成:

      <beanclass="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">

      <propertyname="dataSource" ref="casDataSource" />

      <property name="sql" value="select password from user where username=?" />

   <propertyname="passwordEncoder" ref=" passwordEncoder "/>

      </bean>

 

 

參考網址:

Keytool詳細講解http://www.infosecurity.org.cn/article/pki/case/23823.html

Java、咖啡與茶http://linliangyi2007.javaeye.com/blog/165307 (推薦)學習筆記一

                http://linliangyi2007.javaeye.com/blog/165310 學習筆記二

                http://linliangyi2007.javaeye.com/blog/165313 學習筆記三

扭曲的鉛筆  http://www.blogjava.net/naruke/archive/2008/08/12/161551.html配置(

                  http://www.blogjava.net/naruke/archive/2007/11/19/161574.html配置(下

Pocky的工作室

http://hi.baidu.com/zh_m_zhou/blog/item/a6236da5765bd6f09052ee8f.html/cmtid/a292b6ecbe99b04579f05516(上篇)

http://hi.baidu.com/zh%5Fm%5Fzhou/blog/item/a56123071aeae77c02088196.html(下篇)

 

使用 J2EE Policy Agent保護應使用程序

http://www.cqzol.com/programming/J2EEJ2ME/200812/273824.html

WZK網址庫

 

Spring Framework開發參考手冊         http://www.redsaga.com/spring_ref/2.0/html/

51視窗                               http://www.51windows.net/hw/asp/

                                     http://www.jar114.com

 

 

 

 

 

 

 

 

 

 

 

 

維護記錄:

安全證書到期,訪問時瀏覽器顯示:

只對第一步的<3>爲客戶端的JVM導入密鑰:做一個別名修改sjc改爲sjc1987

C:\Documents and Settings\wangyoushi8>keytool -import -keystoreD:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -aliassjc1987

輸入keystore密碼: changeit

Owner: CN=gaofeng.nmc.hamcc, OU=上海神洲數港, O=網絡優化, L=鄭州, ST=河南, C=ZH

發照者: CN=gaofeng.nmc.hamcc, OU=上海神洲數港, O=網絡優化, L=鄭州, ST=河南, C=ZH

序號: 4b3b122d

有效期間: Wed Dec 30 16:41:17 CST 2009至: Tue Mar 30 16:41:17 CST 2010

認證指紋:

         MD5 80:6C:C1:02:B3:6C:BC:F3:A3:B9:EA:69:22:13:56:5A

         SHA197:33:73:8A:07:0C:B9:49:4E:4B:58:74:4D:FE:20:25:E0:1B:12:D1

信任這個認證? []  y

認證已添加至keystore

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章