Sso cas

SSOCAS单点登录实例

1.演示环境

软件

版本

域名

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





2.jdk安装配置

pass

3.主机名配置

登录Cas Server,编辑hosts文件,添加演示环境中域名与IP对应关系

4.安全证书配置

创建证书

证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;本教程由于是演示所以就自己用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

输入 的密钥口令

        (如果和密钥库口令相同, 按回车):  

# 名字和姓氏必须设置为CAS的主机名

导出密钥

导出别名为tomcat的密钥文件

[root@localhost ~]# keytool -export -file  /root/cas.crt -alias tomcat -keystore /root/cas.keystore

输入密钥库口令:    <-------------上一步设定的密码

存储在文件 中的证书

客户端的JVM导入密钥

[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

证书已添加到密钥库中

服务器端TOMCAT配置,启用SSL,修改server.xml文件

            maxThreads="150"  scheme="https" secure="true"

             clientAuth="false"  sslProtocol="TLS"

keystoreFile="/root/cas.keystore  "

            keystorePass="123456"/>

验证

https://server.cecgw.cn:8443

5.CAS server部署

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.wartomcat/webapps下,启动tomcat

5.3访问cas应用:https://server.cecgw.cn:8443/cas/login

5.4输入默认的用户名和密码即可登录 admin/admin

SSO之CAS_第1张图片

本例中使用的为用户名和密码方式,连接数据库验证的方式稍后增加。

6.CAS client配置

Cas client下载地址:http://downloads.jasig.org/cas-clients/

准备2tomcat用于登录验证,本例中以tomcat默认自带webapps/example作为演示web项目

Tomcat1 端口:8080

Tomcat2 端口:8086

配置tomcat1

解压下载的cas client包,拷贝cas-client-3.2.1/modules/下的cas-client-core-3.2.1.jarcommons-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文件,增加如下规则

   CASFilter

   org.jasig.cas.client.authentication.AuthenticationFilter

 

     casServerLoginUrl

     https://server.cecgw.cn:8443/cas/login

         

         

              serverName

             http://client.cecgw.cn:8080

         

    CASFilter

   /*

  CAS Validation  Filter

 

  org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter

 

       casServerUrlPrefix

      https://server.cecgw.cn:8443/cas

 

 

    serverName

    http://client.cecgw.cn:8080

 

 

  CAS Validation  Filter

  /*

配置tomcat2

解压下载的cas client包,拷贝cas-client-3.2.1/modules/下的cas-client-core-3.2.1.jarcommons-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文件,增加如下规则

   CASFilter

   org.jasig.cas.client.authentication.AuthenticationFilter

 

     casServerLoginUrl

     https://server.cecgw.cn:8443/cas/login

         

         

              serverName

             http://client.cecgw.cn:8086

         

    CASFilter

   /*

  CAS Validation  Filter

 

   org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter

 

       casServerUrlPrefix

      https://server.cecgw.cn:8443/cas

 

 

     serverName

    http://client.cecgw.cn:8086

 

 

  CAS Validation  Filter

  /*


7.验证

验证过程:打开tomcat1 url --->跳转到cas server验证 ---> 显示tomcat1应用 ---> 打开tomcat2 url ---> 显示tomcat2应用 ---> 注销cas server ---> 打开tomcat1/tomcat2 url ---> 重新跳转到cas server验证

打开tomcat1 url

http://client.cecgw.cn:8080/examples/servlets/servlet/HelloWorldExample

跳转到cas server验证:

SSO之CAS_第2张图片

显示tomcat1应用:

SSO之CAS_第3张图片

打开tomcat2 url

SSO之CAS_第4张图片

注销cas server

SSO之CAS_第5张图片

打开tomcat1/tomcat2 url 重新跳转到cas server验证

SSO之CAS_第6张图片

错误集锦

1证书未导入, 别名 已经存在

错误描述

[root@client ~]# keytool -import -keystore  /usr/java/jdk1.7.0_21/jre/lib/security/cacerts -file mykey.crt -alias tomcat

输入密钥库口令:  

keytool 错误:  java.lang.Exception: 证书未导入, 别名 已经存在

解决办法

keytool -delete -alias tomcat -file  /usr/java/jdk1.7.0_21/jre/lib/security/cacerts