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是指JDK的JRE路径下的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.1和localhost是不是在一行。
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.warcopy到tomcat\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到你所发布的webapp的WEB-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所启动的ip和port-->
</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文件中加入dateSource的Bean
<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/
维护记录:
安全证书到期,访问时浏览器显示:
只对第一步的<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
SHA1:97:33:73:8A:07:0C:B9:49:4E:4B:58:74:4D:FE:20:25:E0:1B:12:D1
信任这个认证? [否]: y
认证已添加至keystore中