1 安装
1.1系统配置
以下的软件环境是必需的:
1. jdk 1.4.2 or higher
2. tomcat 5.x
1.2 tomcat 配置,启用ssl
1. 在要安装cas的机器上为tomcat生成用于ssl通讯的密钥:
keytool ?cgenkey ?calias tomcat ?ckeyalg rsa
这时需要输入密钥密码和其他参数(第一个参数cn必须设置为cas机器名,本机使用localhost测试),会在用户目录中生成.keystore密钥文件。
2. 导出密钥文件:
keytool ?cexport ?cfile server.crt ?calias tomcat
这时需要输入上一步设定的密码,结果会在当前目录生成server.crt信任状。
3. 为客户端的jvm导入密钥:
keytool ?cimport ?ckeystore $java_home/jre/lib/security/cacerts
?cfile server.crt ?calias tomcat
输入密码时注意密码为“changeit”。
4. 修改服务端tomcat配置文件,启用ssl。修改$catalina_home/conf/server.xml,去掉有关ssl的那一段的注释,需要在connector字段中加入keystorepass="password"(password即为1、2步中的密码),keystorefile= "keystorepath"(可以把第一步生成的.keystore复制到$catalina_home/conf下,这样keystorefile= "conf/.keystore")。
5. 重启tomcat,测试https://server:8443是否可以访问(server应换为机器名或ip地址)。
1.3 cas server安装
下载cas server 3.0.4,将其中的cas.war复制到$catalina_home/webapps下,当然现在cas中的用户密码认证handler是很简陋的,产品化必须重写这部分代码,生成新的cas.jar。这时可以通过访问https://localhost:8443/cas测试cas是否成功部署,应看到cas登陆界面。
1.4 cas client 部署
利用tomcat自带的servlets-examples ($catalina_home/webapps/servlets-examples)和jsp-examples($catalina_home/ webapps/jsp-examples)进行试验,下载最新版本的java cas client,将casclient.jar复制到这两个项目的web-inf目录的lib下(需要新建此目录)。修改两个项目的web-inf/ web.xml,添加如下的过滤器:
<!-- cas filters -->
<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://server:8443/cas/login</param-value>
</init-param><!--这里的server是服务端的ip-->
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateurl</param-name>
<param-value>https://sername:8443/cas/proxyvalidate</param-value>
</init-param><!--这里的sername是服务端的主机名,而且必须是-->
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.servername</param-name>
<param-value>client:port</param-value><!--client:port就是需要cas需要拦截的地址和端口,一般就是这个tomcat所启动的ip和port-->
</init-param>
</filter>
<filter-mapping>
<filter-name>casfilter</filter-name>
<url-pattern>/servlet/*</url-pattern><!--这里的设置是针对servlets-examples的,针对jsp-examples设置为/*-->
</filter-mapping>
2 测试
重启tomcat,定位到servlets-examples,执行任何一个例子都会被重定向到cas登陆页;再定位到jsp-examples,也会被重定向到cas登陆页;此时登陆(默认的认证handler只要求username=password,可任意选择用户名);登录后就会进入jsp- examples;继续定位到servlets-examples,执行任何一个例子也不用再输入密码。
补充:
在多台机器上部署cas:这些机器必需在同一个域中;服务器端生成证书,客户端导入证书(操作见上)。
php客户端:使用esup-phpcas客户端,验证部分php代码如下:
// import phpcas lib
include_once('cas/cas.php');
// initialize phpcas
phpcas::client(cas_version_2_0,'freeserver.test-toodou.com',8443,'/cas');
// force cas authentication
phpcas::forceauthentication();
// at this step, the user has been authenticated by the cas server
// and the user's login name can be read with phpcas::getuser().
// logout if desired
if (isset($_request['logout'])) {
phpcas::logout();
}
登录结束后,cas服务器会自动重定向回本页面。
cas服务器与数据库连接:实际环境中我们需要到数据库验证用户有效性,在cas中配置jdbc连接。
首先,我们需要创建自己的数据库验证器,当然也可以使用jasig提供的cas-server-jdbc.jar,这里我们修改了cas-server- jdbc的源码满足自己的需要。并把mysql的jdbc驱动和修改后的jar部署到cas%/web_inf/lib/。
修改 %cas%/web_inf/deployerconfigcontext..xml,其中关于验证器的一段如下:
………………………………..
<bean class="org.jasig.cas.adaptors.jdbc.querydatabaseauthenticationhandler">
<property name="sql" value="select psw from user where username=?" />
<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>com.mysql.jdbc.driver</value></property>
<property name="url"><value>jdbc:mysql://192.168.1.246:3306/toodou</value></property>
<property name="username"><value>username</value></property>
<property name="password"><value>********</value></property>
</bean>
trackback: http://tb.blog.csdn.net/trackback.aspx?postid=1503239
闽公网安备 35060202000074号