`

cas在tomcat实现单点登录

    博客分类:
  • Java
阅读更多

使用cas在tomcat实现单点登录(精)2009-04-01 08:17cas是目前非常流行的企业应用SSO解决方案。本文就cas的配置及使用展开讨论,下图为cas原理:

 

一、软件准备:

1、apache-tomcat-6.0.18。

2、cas-server-3.3.1-release.zip(cas服务器)。

3、cas-client-2.0.11.zip。


二、配置tomcat的ssl

1、生成keystore证书

keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=localhost" -keystore server.keystore -storepass changeit

cn表示一个主机名或者一个域名,本机用localhost表示。

alias表示插入到证书中的别名。

命令执行完后,在当前目录生成server.keystore证书文件,注意,该文件一定要保护好,后面配置时需要用到。为了后面方便导入,将该文件直接生成在C:Program FilesJavajdk1.6.0_10jrelibsecurity目录下,该目录是我的jdk安装目录,注意:在windows下用导入证书时,目录名中间不能有空格,为了避免导入麻烦,jdk最好安装在没有空格的目录里。

 

2、导出证书

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

该命令执行完后在当前目录生成证书文件server.cer

 

3、将server.cer导入到jdk的信任库中

在导入之前可以看看信任库中有什么证书

keytool -list -keystore cacerts -storepass changeit

执行完该命令后显示所有证书信息。默认情况下jdk1.6 u10的cacerts信任库中有59条证书信息。

如果信任库中已经有自己的证书信息了,可以用下面的命令删除:

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

需要指定tomcatsso别名。

导入证书用一下命令:

keytool -import -alias tomcatsso -file server.cer -keystore cacerts -storepass changeit
执行结果如下:

 

以上就是tomcat中配置ssl的全部步骤。


三、打开tomcat的https

打开%CATALINA_HOME%/conf/server.xml,找到如下内容:

    <!--
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->

将其换成如下内容

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
      keystorePass="changeit" keystoreFile="C:server.keystore"/>

注意红色部分,我将证书文件拷贝到C盘根下了,不过这不是必须的,我只是为了让目录结构尽量短些。

如果一切顺利,启动tomcat,在浏览器中输入https://localhost:8443/,将会看到tomcat启动页面,说明tomcat的ssl已经配置成功。

四、配置cas server

1、解压cas-server-3.3.1-release.zip,找到cas-server-webapp-3.3.1.war,重命名为cas.war,

将其拷贝到tomcatwebapps下,启动tomcat,生成cas目录,在cas的WEB-INF下的lib目录中拷贝如下jar包:

cas-server-support-jdbc-3.3.1.jar(该文件也在cas-server-3.3.1-release.zip中)

commons-dbcp.jar

commons-pool.jar

spring.jar(必须的)

根据你的数据库的不同,再下个其中拷贝对应数据库的jdbc驱动,本文使用mysql,则拷贝

mysql-connector-java-5.0.5-bin.jar


2、配置cas的deployerConfigContext.xml

配置之前需要建立用户表:

 

打开cas/WEB-INF,打开deployerConfigContext.xml,先加入一个bean:

<bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource">
     <property name="driverClassName">
          <value>com.mysql.jdbc.Driver</value>
     </property>
     <property name="url">
          <value>jdbc:mysql://localhost:3306/mydata</value>
     </property>
     <property name="username">
          <value>root</value>
     </property>
     <property name="password">
          <value>111111</value>
     </property>
</bean>
然后向下找到<bean
      class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

将其注释掉,添加如下配置:

<bean id="SearchModeSearchDatabaseAuthenticationHandler"
      class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"
      abstract="false" lazy-init="default"
                       autowire="default" dependency-check="default">
<property name="tableUsers">
   <value>t_users</value><!--表的名字-->
</property>
<property name="fieldUser">
   <value>username</value><!--用户名对应的字段名-->
</property>
<property name="fieldPassword">
   <value>password</value><!--口令对应的字段名-->
</property>
<property name="dataSource" ref="casDataSource" />
</bean>
cas server到此配置完毕,启动tomcat,在地址栏输入:https://localhost:8443/cas/login

不出意外,将出现登陆窗口,如果前面数据库中有数据,如用户名为xhd,口令为111111,则在该登录页面输入,点击登录后将显示登陆成功的页面。

五、配置cas客户端

1、在myeclipse中建立一个web project,在web.xml中添加如下内容:

<filter>
    <filter-name>CAS Filter</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://localhost:8443/cas/login</param-value>
    </init-param>
    <init-param>
      <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
      <param-value>https://localhost:8443/cas/serviceValidate</param-value>
    </init-param>
    <init-param>
      <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
      <param-value>localhost:8080</param-value>
    </init-param>
    <init-param>
      <param-name>edu.yale.its.tp.cas.client.filter.wrapRequest</param-name>
      <param-value>true</param-value>
    </init-param>(1)
</filter>
<filter-mapping>
    <filter-name>CAS Filter</filter-name>
    <url-pattern>/*</url-pattern>(2)
</filter-mapping>

注意:(1)部分表示在cas server登录成功后,可以自动跳转到客户端访问的页面。

      (2)部分表示客户端的所有资源都将被保护,也就是说当客户端访问的任何页面都将被cas验证。

2、解压cas-client-2.0.11.zip,在cas-client-2.0.11.zipcas-client-2.0.11javalib下找到casclient.jar,将其拷贝到客户应用的WEB-INFlib下。

好了,启动tomcat,体验你的辛苦带来的乐趣吧。


参考:

使用 CAS 在 Tomcat 中实现单点登录

http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics