Sso cas
软件 |
版本 |
域名 |
IP |
服务应用 |
Cas server |
3.4.2.1 |
server.cecgw.cn |
192.168.33.120 |
|
Cas client |
3.2.1 |
client.cecgw.cn |
192.168.33.121 |
tomcat1/tomcat2 |
Tomcat |
6.0.37 |
|||
Jdk |
1.7.0_21 |
pass
登录Cas Server,编辑hosts文件,添加演示环境中域名与IP对应关系
证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;本教程由于是演示所以就自己用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供商去购买,证书认证一般都是由VeriSign。
中文官方网站:http://www.verisign.com/cn/
在要安装CAS的机器上为TOMCAT生成用于SSL通讯的密钥:
[root@localhost ~]# keytool -genkey -alias tomcat -keyalg RSA -keystore /root/cas.keystore 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: server.cecgw.cn 您的组织单位名称是什么? [Unknown]: cecgw 您的组织名称是什么? [Unknown]: cecgw 您所在的城市或区域名称是什么? [Unknown]: china 您所在的省/市/自治区名称是什么? [Unknown]: beijing 该单位的双字母国家/地区代码是什么? [Unknown]: ch CN=server.cecgw.cn, OU=cecgw, O=cecgw, L=china, ST=beijing, C=ch是否正确? [否]: y 输入 <tomcat> 的密钥口令 (如果和密钥库口令相同, 按回车): |
# 名字和姓氏必须设置为CAS的主机名
导出别名为tomcat的密钥文件
[root@localhost ~]# keytool -export -file /root/cas.crt -alias tomcat -keystore /root/cas.keystore 输入密钥库口令: <-------------上一步设定的密码 存储在文件 </tmp/server.crt> 中的证书 |
[root@localhost ~]# keytool -import -keystore /usr/java/jdk1.7.0_21/jre/lib/security/cacerts -file /root/cas.crt -alias tomcat 输入密钥库口令: <---------默认密码为“changeit” 所有者: CN=server.cecgw.cn, OU=cecgw, O=cecgw, L=china, ST=beijing, C=ch 发布者: CN=server.cecgw.cn, OU=cecgw, O=cecgw, L=china, ST=beijing, C=ch 序列号: 6d403d88 有效期开始日期: Fri May 10 23:05:01 CST 2013, 截止日期: Thu Aug 08 23:05:01 CST 2013 证书指纹: MD5: 51:F2:00:22:A9:50:B1:E8:15:65:7A:A1:CE:9D:2A:59 SHA1: D5:3E:5A:5B:00:64:CB:68:D2:79:B0:BB:E7:C6:6D:AF:DC:AF:BF:93 SHA256: 2E:1C:E4:7C:3E:BF:80:7D:6A:17:B6:33:07:97:61:48:8B:14:BC:9D:CE:01:A1:6F:25:AB:ED:B9:9C:E6:03:62 签名算法名称: SHA256withRSA 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: D6 0B D9 D8 2A 7A 1D 42 41 29 31 13 A7 56 04 93 ....*z.BA)1..V.. 0010: 63 A8 6A 5A c.jZ ] ] 是否信任此证书? [否]: y 证书已添加到密钥库中 |
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/root/cas.keystore " keystorePass="123456"/> |
https://server.cecgw.cn:8443
Casserver下载地址:http://downloads.jasig.org/cas/
5.1解压本例中的cas软件包cas-server-3.4.2.1-release.zip
5.2拷贝cas-server-3.4.2.1/modules/cas-server-webapp-3.4.2.1.war至tomcat/webapps下,启动tomcat
5.3访问cas应用:https://server.cecgw.cn:8443/cas/login
5.4输入默认的用户名和密码即可登录 admin/admin
本例中使用的为用户名和密码方式,连接数据库验证的方式稍后增加。
准备2个tomcat用于登录验证,本例中以tomcat默认自带webapps/example作为演示web项目
Tomcat1 端口:8080
Tomcat2 端口:8086
解压下载的cas client包,拷贝cas-client-3.2.1/modules/下的cas-client-core-3.2.1.jar和commons-logging-1.1.jar至项目的lib
cp cas-client-core-3.2.1.jar /usr/local/tomcat1/webapps/examples/WEB-INF/lib/ cp commons-logging-1.1.jar /usr/local/tomcat1/webapps/examples/WEB-INF/lib/ |
修改webapps/examples/WEB-INF/web.xml文件,增加如下规则
<!-- 该过滤器负责用户的认证工作--> <filter> <filter-name>CASFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://server.cecgw.cn:8443/cas/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://client.cecgw.cn:8080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CASFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 该过滤器负责对Ticket的校验工作 --> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class> org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://server.cecgw.cn:8443/cas</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://client.cecgw.cn:8080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
解压下载的cas client包,拷贝cas-client-3.2.1/modules/下的cas-client-core-3.2.1.jar和commons-logging-1.1.jar至项目的lib
cp cas-client-core-3.2.1.jar /usr/local/tomcat2/webapps/examples/WEB-INF/lib/ cp commons-logging-1.1.jar /usr/local/tomcat2/webapps/examples/WEB-INF/lib/ |
修改webapps/examples/WEB-INF/web.xml文件,增加如下规则
<!-- 该过滤器负责用户的认证工作--> <filter> <filter-name>CASFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://server.cecgw.cn:8443/cas/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://client.cecgw.cn:8086</param-value> </init-param> </filter> <filter-mapping> <filter-name>CASFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 该过滤器负责对Ticket的校验工作 --> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class> org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://server.cecgw.cn:8443/cas</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://client.cecgw.cn:8086</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
验证过程:打开tomcat1 url --->跳转到cas server验证 ---> 显示tomcat1应用 ---> 打开tomcat2 url ---> 显示tomcat2应用 ---> 注销cas server ---> 打开tomcat1/tomcat2 url ---> 重新跳转到cas server验证
http://client.cecgw.cn:8080/examples/servlets/servlet/HelloWorldExample
错误描述
[root@client ~]# keytool -import -keystore /usr/java/jdk1.7.0_21/jre/lib/security/cacerts -file mykey.crt -alias tomcat 输入密钥库口令: keytool 错误: java.lang.Exception: 证书未导入, 别名 <tomcat> 已经存在 |
解决办法
keytool -delete -alias tomcat -file /usr/java/jdk1.7.0_21/jre/lib/security/cacerts |