CAS学习笔记

 

1 实验环境

1.1 CAS Server

FreeBSD + Diablo-JDK 1.5.0 + Tomcat 6.0 + CAS Server 3.2.1

IP地址:192.168.0.180

域名:www.test.com

1.2 CAS Client

Windows + JDK 1.5.10 + Tomcat 6.0 + JA-SIG CAS-Client-3.1.3

IP地址:192.168.0.116

1.3 CAS Server 端数据验证的数据库

数据库:PostgreSQL 8.2

IP 地址192.168.0.180

数据库名称:BH_PORTAL

表名称:citizen

表定义:

CREATE TABLE citizen

(

  citizenid character varying(20) NOT NULL,

  "password" character varying NOT NULL,

  question character varying,

  answer character varying,

  name character varying NOT NULL,

  CONSTRAINT citizen_pkey PRIMARY KEY (citizenid)

)

说明:其中citizenid用于登录的ID”password”用于密码校验


 

2 环境搭建

2.1 CAS 服务器端

2.1.1 CAS服务器端生成HTTPS证书并注册

%JAVA_HOME%/jre/lib/security目录下运行如下Shell文件

#!/bin/csh

clear

keytool -delete -alias tomcatsso -keystore cacerts -storepass changeit

keytool -list -keystore cacerts -storepass changeit

keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=www.test.com" -keystore cacerts -storepass changeit

keytool -export -alias tomcatsso -file tomcatsso.crt -keystore cacerts -storepass changeit

keytool -import -alias tomcatsso -file tomcatsso.crt -keystore cacerts -storepass changeit

keytool -list -keystore cacerts -storepass changeit

说明:在生成key的过程,"cn=www.test.com" 中的www.test.comServer端的域名。

 

2.1.2 配置TomcatHTTPS服务

cacerts文件复制到TOMCATconf目录下

修改server.xml

               connectionTimeout="20000"

               redirectPort="443" />

  

           enableLookups="true" disableUploadTimeout="true"    

           acceptCount="100"  maxThreads="200"  

           scheme="https" secure="true" SSLEnabled="true"  

           clientAuth="false" sslProtocol="TLS"

           keystoreFile="conf/cacerts" keystorePass="changeit"

           truststoreFile="conf/cacerts"/>

启动Tomcat,测试https://www.test.com:443

 

2.2 CAS客户端

2.2.1 复制证书

复制tomcatsso.crt 文件到%JAVA_HOME%/jre/lib/security

 

2.2.2 导入证书

将证书tomcatsso.crt 文件导入到cacerts文件中

keytool -import -alias tomcatsso -file tomcatsso.crt -keystore cacerts -storepass changeit


 

3 配置

3.1 服务器端

3.1.1 部署cas server

将下载的cas-server-webapp-3.2.1.war复制到TOMCATwebapps目录下,并改名为cas-server.war

 

3.1.2 修改认证方式

WEB-INF目录下修改deployerConfigContext.xml文件

将原来的

修改为

     

     

 

             org.postgresql.Driver

     

 

             jdbc:postgresql://192.168.0.180:5432/bh_portal

 

      

             pgsql

      

     

      

             javac

      

其目的是将原来的SimpleTestUsernamePasswordAuthenticationHandler认证改为根据数据库数据进行认证。

 

3.2 客户端应用

3.2.1 建立应用

partner1partner2

Partner1下建立子目录secure,在secure中写2个测试页面,debug.jspindex.jsp

3.2.2 Partner1配置

编辑web.xml

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

   version="2.5">

 

    contextConfigLocation

    /WEB-INF/classes/spring-appContext.xml

 

 

      CAS Single Sign Out Filter

     org.jasig.cas.client.session.SingleSignOutFilter

             

      CAS Single Sign Out Filter

      /*

             

                  org.jasig.cas.client.session.SingleSignOutHttpSessionListener

  

    CAS Authentication Filter

    org.springframework.web.filter.DelegatingFilterProxy

   

      targetBeanName

      casAuthenticationFilter

   

 

 

    CAS Validation Filter

    org.springframework.web.filter.DelegatingFilterProxy

   

      targetBeanName

      casValidationFilter

   

 

 

 

    CAS HttpServletRequestWrapperFilter

    org.springframework.web.filter.DelegatingFilterProxy

   

      targetBeanName

      casHttpServletRequestWrapperFilter

   

 

 

 

  CAS Authentication Filter

    /secure/*

 

 

  

    CAS Validation Filter

    /secure/*

 

 

 

    CAS HttpServletRequestWrapperFilter

    /secure/*

 

 

    org.springframework.web.context.ContextLoaderListener

   

 

编辑spring-appContext.xml文件

/WEB-INF/classes目录下创建spring-appContext.xml文件

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

                http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

 

    class="org.jasig.cas.client.authentication.AuthenticationFilter">

      

      

 

 

      class="org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter">

   

      

     

     

     

   

   

     

   

     

     

 

 

class="org.jasig.cas.client.util.HttpServletRequestWrapperFilter"/>

 

复制所需JAR

cas-client-core-3.1.3.jarspring.jar这两个JAR包复制到/WEB-INF/lib目录下

 

3.2.3 Partner2配置

partner1完全相同

 

3.2.4 gateway参数更改(用于实验三, 在实验一和实验二中不要修改

配置index.jspGateway参数

设置Gateway参数为false(默认值为false

web.xml文件:

保持原有无需改变

 

spring-appContext.xml文件

AuthenticationFilter对应的Bean添加一个属性gateway,并显式的设置为false

 

配置debug.jspGateway参数

设置Gateway参数为true(默认值为false

 

web.xml文件

       debug.jsp独立配置上面spring-appContext.xml文件中所提及到的3个过滤器AuthenticationFilter, Cas20ProxyReceivingTicketValidationFilter, HttpServletRequestWrapperFilter

 

spring-appContext.xml文件

AuthenticationFilter对应的Bean添加一个属性gateway并设置值为true


 

4 实验

4.1 实验一:单点登录

A. 访问http://192.168.0.116:8080/partner1/secure/index.jsp

B. 浏览器RedirectCAS服务器端,输入用户名和密码,点击确认

C. 在另外一个选项卡上访问http://192.168.0.116:8080/partner2/secure/index.jsp

 

4.2 实验二:单点登出

A.      访问http://192.168.0.116:8080/partner1/secure/index.jsp

B.      浏览器RedirectCAS服务器端,输入用户名和密码,点击确认

C.      在另外一个选项卡上访问http://192.168.0.116:8080/partner2/secure/index.jsp

D.     在另外一个选项卡上访问https://www.test.com:443/cas-server/logout,进行登出

E.      在另外一个选项卡上访问http://192.168.0.116:8080/partner2/secure/debug.jsp,确认登出成功

 

4.3 实验三:测试Gateway参数

A.      访问http://192.168.0.116:8080/partner1/secure/debug.jsp

B.      在另外一个选项卡上访问http://192.168.0.116:8080/partner1/secure/index.jsp

浏览器RedirectCAS服务器端,输入用户名和密码,点击确认

你可能感兴趣的:(J2EE,character,bean,postgresql,authentication,redirect,tomcat)