首页 | 联系我们 | 叶凡网络官方QQ群:323842844
游客,欢迎您! 请登录 免费注册 忘记密码
您所在的位置:首页 > 开发语言 > Java开发 > 正文

使用Yale的CAS实现SSO的服务器端配置

作者:cocomyyz 来源: 日期:2013-07-25 01:51:08 人气:18 加入收藏 评论:0 标签:java

CAS简介

CAS(Central Authentication Service)是Yale大学开发的一套JAVA实现SSO的开源服务。该服务是以一个JAVA WEB 程序来进行服务的,使用时需要将服务器端发布到一个servlet 2.3兼容的服务器上,并且服务器需要支持SSL,在需要使用该服务的其他服务器(客户),只要进行简单的配置就可以实现SSO了。CAS 的客户端可以有很多种,因为验证的结果是以XML的格式返回的,CAS的客户端已打包进去的有java、perl、python、asp等好几种客户端示例。

下面我们以tomcat 5.5(jre6.0)作为CAS Server

其中在服务器端的配置可以分为以下几个步骤:

1.    使用SSL

a)      生成密钥对

b)      将服务器证书导出为证书文件

c)      将证书文件导入到java证书库cacerts文件中

d)      修改<TOMCAT_HOME>/conf下面得server.xml文件

2.    部署CAS服务器

3.    修改CAS登录的用户库

4.    测试是否配置成功

5.    配置过程中可能会出现的错误


下面就以上步骤详细阐述:

1.    使用SSL

使用SSL需要使用的java提供的keytool.exe工具,如果java配置了环境变量,可以直接在命令窗口使用,如果没有则学要将目录CD到jdk的bin下。


a)      生成密钥对

使用下面的的命令

keytool -genkey -alias tomcat -keyalg RSA

密码是:changeit

姓名是:localhost

其他的提示输入的信息可以随便输入


这个命令生成的文件默认在当前目录,即CMD的当前目录C:\Documents and Settings\Administrator(如果没有使用cd命令)。默认文件名.keystore,当然也可以使用

-keystore tomcat.keystore来指定文件名。这里使用默认文件名。


b)      将服务器证书导出为证书文件

使用下面的命令

   keytool -export -alias tomcat -file tomcat.crt

   这里注意一点,导出来的crt证书文件在双击打开的时候可能会看到有红叉在证书上,    这个时候只要按照向导安装完成就可以了。

 

c)      将证书文件导入到java证书库cacerts文件中

使用下面的命令

keytool -import -alias tomcat -file tomcat.crt –keystore C:/Program Files/Java/jdk/jre/lib/security/cacerts -storepass changeit
这里也要注意的一点便是,要在部署客户端(java的)的tomcat所使用的jre内的证书库导入证书。如果机器上安装的jdk版本很多的话一定要尤其要注意。

d)      <TOMCAT_HOME>/conf下面得server.xml文件

打开server.xml文件,定位到

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->

<!--

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

   -->

 

   将下面的注释去掉并加入两个属性:

keystoreFile="C:\Program Files\tomcat-\.keystore"

keystorePass="changeit"

如下:

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->


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

keystoreFile="C:\Program Files\tomcat-\.keystore"

keystorePass="changeit"/>

   其中keystoreFile指定.keystore文件的位置,

keystorePass指定服务器证书文件的密码。


2.    部署CAS服务器的WAR包

将cas-server--release.zip解压缩,把modules文件夹中的cas-server-webapp-.war

文件拷贝到<TOMCAT_HOME>/webapps/下,改名为cas(这里的名字只是一种习惯),然后启动服务器,其会自动解压。


3.    修改CAS登录的用户库

CAS默认设置为只要用户名和密码相同,即可进行登录,这在现实使用中是不允许的。我们修改为使用MSSQL的supermarket数据库中的users表作为用户数据源。其中users表中有users_id(用户名),users_pass(密码)字段。

打开<TOMCAT_HOME>/webapps/cas/WEB-INF下的deployerConfigContext.xml文件


首先找到

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


注释掉该行,在其下加入:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">

   <property name="sql" value="select users_pass from users where users_id=?" />

   <property name="dataSource" ref="dataSource" />

</bean>

这里bean的class属性用到的是CAS服务器端封装的JDBC包cas-server-jdbc--rc2.jar里的QueryDatabaseAuthenticationHandler方法,所以要将此包拷贝到/WEB-INF下的lib中;

sql属性的value就是从users表中取登录数据的sql语句。


再添加一个bean:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName">

   <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

   </property>

   <property name="url">

<value>jdbc:microsoft:sqlserver://192.168.1.146:1433;DatabaseName=supermarket</value>

   </property>

   <property name="username">

       <value>sa</value>

   </property>

   <property name="password">

       <value></value>

   </property>

</bean>

因为这里测试用的是MSSQL2000所以同样要将SQL2000的数据库连接的三个包msbase.jar ,mssqlserver.jar和 msutil.jar拷贝到/WEB-INF下的lib中。


4.    测试是否配置成功

启动startup.bat,运行tomcat之后,新打开得浏览器中输入http://localhost:8443即可看到安全连接对话框,选择之后可以看到正常运行得tomcat。说明CAS服务器已经配置成功并完成。


5.    配置过程中可能会出现的错误

a)       系统找不到指定的文件:(服务器启动时)

情况一,

C:\Documents and Settings\Administrator\.keystore (系统找不到指定的文件。)

情况二,

C:\Program Files\tomcat-\server.keystore (系统找不到指定的文件。)


如果您只是在tomcat的server.xml配置中打开了8443端口,但没有用keystoreFile属性,tomcat默认去找C:\Documents and Settings\Administrator\.keystore文件,如果没有找到就会出现情况一的错误,如果使用了keystoreFile属性,但仍然没有server.keystore文件,就会出现情况二的错误。


b)       Keystore was tampered with, or password was incorrect(服务器启动时)

当使用了keystorePass时且提供了错误的密码便会出现这个错误。


c)      No name matching localhost found

这就是步骤 1-a)要求 姓名是:localhost的原因,当姓名不是localhost的时候,我们在CASFilter中使用localhost就会报这个错。


d)      unable to find valid certification path to requested target

当服务器证书没有导入到jre的cacerts证书库的时候会出现这个错误,同样要注意要讲证书导入到tomcat使用的jre中。


本文网址:http://www.mingyangnet.com/html/java/106.html
读完这篇文章后,您心情如何?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
上一篇: java keytool的用法
更多>>网友评论
发表评论
编辑推荐
  • 没有资料