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

 

CAS SSO单点登录实例详细步骤


这里要注意如果不这样写就会报如下异常:
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如果浏览器显示:

CAS SSO单点登录实例详细步骤

 

可以把localhost用本机IP地址,如https://10.87.59.162:8443/试试。如果配置正确就搞定了,浏览显示的时候提示安装证书。浏览器的状态栏会显示如图所示:

CAS SSO单点登录实例详细步骤

解决办法:

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

b.是否用了代理服务器上网,选中“对于本地址不使用代理服务器。

 CAS SSO单点登录实例详细步骤

部署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如浏览器显示:

CAS SSO单点登录实例详细步骤

默认的casserver的验证是只要用户名和密码一样就可以成功登录。如图:

CAS SSO单点登录实例详细步骤

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

 

 

 

 

 

 

 

 

 

 

 

 

维护记录:

安全证书到期,访问时浏览器显示:

CAS SSO单点登录实例详细步骤

只对第一步的<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

CAS SSO单点登录实例详细步骤

上一篇:微软企业库5.0 支持 MySql


下一篇:CentOS6.5(64b) JDK1.7环境搭建篇