SSO之CAS

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

输入 <tomcat> 的密钥口令

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

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

导出密钥

导出别名为tomcat的密钥文件

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

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

存储在文件 </tmp/server.crt> 中的证书

客户端的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文件

<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

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

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

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文件,增加如下规则

<!-- 该过滤器负责用户的认证工作-->

<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>

配置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文件,增加如下规则

<!-- 该过滤器负责用户的认证工作-->

<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>


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验证:

显示tomcat1应用:

打开tomcat2 url

注销cas server

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

错误集锦

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

错误描述

[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




你可能感兴趣的:(SSO,cas)