用CAS实现单点登陆

来源:互联网 发布:网络流量控制器软件 编辑:程序博客网 时间:2024/05/16 16:10

环境

a)        Windows 2003 sp1

b)        JDK1.6.0_02

c)        Tomcat 5.5.23

d)        Mssql2k

二.准备

a)         cas-server-3.0.6.zip  下载地址:http://www.ja-sig.org/products/cas/index.html

b)        cas-client-java-2.1.1.zip  下载地址:同上

c)        安装完jdkjre后,需要配置JAVA_HOMEPATH=%JAVA_HOME%/bin

三.步骤

a)    配置Tomcat使用SSL安全认证

      i. 使用命令提示符进入到Tomcat安装目录

      ii. 生成服务端密匙,执行以下命令

    keytool -genkey -alias casserver -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore

运行后出现提示信息:

您的名字与姓氏是什么?

  [Unknown]  login.xxx.com.cn           这里一定要填写正确的域名

其余可不填

完成后会在Tomcat目录生成一个名为casserver的文件

                      iii. 生成服务端证书,执行以下命令

          keytool -export -alias casserver -storepass changeit -file server.cer   -keystore server.keystore

          命令执行后生成一个server.cer的证书文件

 

          IVV步骤可以省略

 

                     iv. 生成客户端密匙,执行以下命令

    keytool -genkey -alias casclient -keyalg RSA -keypass changeit -storepass   changeit -keystore client.keystore

                     v. 生成客户端证书,执行以下命令

       keytool -export -alias casclient -storepass changeit -file client.cer    -keystore client.keystore

      命令执行后生成一个client.cer的证书文件


                     vi.  导入证书文件到cacerts 文件中,执行以下命令

          keytool -import -trustcacerts -alias server -file server.cer -keystore   cacerts -storepass changeit

                          

          client.cer可以不用倒入

          keytool -import -trustcacerts -alias client -file client.cer -keystore   cacerts -storepass changeit

 

          cacerts文件,拷贝到<JAVA_HOME>/jre/lib/security目录下

       注:实做发现应该在C:/Program Files/Java/jre1.6.0_02/lib/security,可从Java 制面板查看

 

                    vii.   拷贝cas-server-3.0.6.zip包内的target目录下的cas.war文件到Tomcat目录下的webapps目录下

                    viii.  修改Tomcat的配置文件server.xml把以下补注释的内容打开

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

        加入红字部份后的内容如下:

          <Connector port="8443" maxHttpHeaderSize="8192"

         keystorePass="changeit" keystoreFile="/server.keystore"

               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

               enableLookups="false" disableUploadTimeout="true"

               acceptCount="100" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" />

 

b)        配置客户端应用

                       i.  使用Tomcat的例子jsp-examples来做客户端

                       ii.  打开项目中的web.xml文件,加入以下配置信息

                     <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://login.xxx.com.cn:8443/cas/login
</param-value>
                            </init-param> 
                            <init-param>
                                <param-name>
                                          edu.yale.its.tp.cas.client.filter.validateUrl
                                   </param-name>
                            <param-value>
                                  
https://login.xxx.com.cn:8443/cas/proxyValidate

                            </param-value>
                     </init-param>
                     <init-param>
                            <param-name>
                                    edu.yale.its.tp.cas.client.filter.serverName
                            </param-name>
                                   <param-value>
xxx.yyy.zzz:8080
</param-value>
                      </init-param>
              </filter>

              <filter-mapping>
              <filter-name>CASFilter</filter-name>
                     <url-pattern>
/*
</url-pattern>
               </filter-mapping>

 

              拷贝cas-client-java-2.1.1.zip包中的casclient.jar到项目的lib目录下

 

              现在可以启动Tomcat来测试一下是否能够进入到登录页

c)         配置CAS使用数据库进行验证

                         i.              MsSql中的Test库中新建app_user

       CREATE TABLE  app_user (
                  username varchar(30) primary key ,
                  password varchar(45)
          ) ;

 

                      ii.              修改cas项目中的deployerConfigContext.xml文件

<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
注释掉该行,在其下加入:

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
                            <property name="sql" value="select password from
app_user
where username=?" />
                            <property name="dataSource" ref="dataSource" />

                     </bean>
并添加一个bean

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
       <property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
       <property name="url"><value>jdbc:jtds:sqlserver://xxx.xxx.xxx.xxx:1433/test</value></property>
       <property name="username"><value>user</value></property>
       <property name="password"><value>passwd</value></property>
    </bean>                          

 

修改后的文件片断如下:

.

.

.

 <!--
    <bean
     class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
                           -->

    <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
          <property name="sql" value="select password from users where code=?" />
          <property name="dataSource" ref="dataSource" />
    </bean>

 

   </list>
  </property>
 </bean>


<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
       <property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
       <property name="url"><value>jdbc:jtds:sqlserver://10.1.2.81:1433/reader_test</value></property>
       <property name="username"><value>zw</value></property>
       <property name="password"><value>aaa</value></property>
</bean>

</beans>


拷贝cas-server-jdbc-3.0.6.jarjtds-1.2.jarwebapps/cas/WEB-INF/lib下。 

 
原创粉丝点击