1、CAS配备手册 1 准备工具 1 cas-server-3.4.5-release.zip: 2 cas-client-3.2.0-release.zip: 2 配备环境 CAS 服务器信息 计算机名:IMC-Server 操作系统:Windows SP2 JDK:jdk1.6.0_21 Tomcat:apache-tomcat-6.0.30 浏览器:IE6 IP地址:10.12.21.45 CAS客户端信息 IP地址:10.12.21.140 Oracle数据库信息 IP地址:10.12.21.140 顾客名:scott 密码:tiger 3 CAS
2、验证服务器配备 1 解压cas-server-3.4.5-release.zip到磁盘(我途径为D:\cas-server-3.4.5),进入D:\cas-server-3.4.5\modules文献夹下,把cas-server-webapp-3.4.5.war拷贝到Tomcat安装目录(我途径为D:\apache-tomcat-6.0.30)webapps文献夹下。为了以便在浏览器中浏览,把cas-server-webapp-3.4.5.war文献名修改为cas.war 2 运营Tomcat。在浏览器中输入:8080/cas,显示登录界面。输入顾客名和密码(顾客名和密码相等即可),登录成
3、功。这样最简朴CAS验证服务器搭配成功。
4 数据库验证方式
4.1 密码已明文存在数据库中
1 复制D:\cas-server-3.4.5\modules下面所有jar包到D:\apache-tomcat-6.0.30\webapps\
cas\WEB-INF\lib下。数据库为Oracle,因而把Oracle驱动包也复制到lib文献夹下。注意删除重复jar包。
2 打开D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\deployerConfigContext.xml文献
在
5、 jdbc:oracle:thin:@10.12.21.140:1521:orcl
6、ionHandler”
8、act="false" lazy-init="default" autowire="default">
9、中
以上配备只适合密码已明文方式存储在数据库中,但是实际中咱们密码都是通过加密。下面演示下如果使用MD5加密密码。
一方面配备MD5,该配备信息放在数据源配备下面。
10、s="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
11、下面简介下如果使用咱们自己编写加密类。 1 新建一种Java项目,cas-server-core-3.4.5.jar包, 2 新建一种Java类,实现org.jasig.cas.authentication.handler.PasswordEncoder接口中public String encode(String arg0)办法,这是用来对输入密码进行加密,我这里命名为:PasswordEncrypt 3 在encode()办法中可以依照实际加密方式编写代码。 package szy.cas.encrypt; import java.security.MessageDige
12、st; import org.jasig.cas.authentication.handler.PasswordEncoder; /** * @author coolszy * @date Jan 21, */ public class PasswordEncrypt implements PasswordEncoder { public String encode(String password) { try { MessageDigest alg = MessageDigest.getInstance("SHA-1");
13、alg.reset(); alg.update(password.getBytes()); byte[] hash = alg.digest(); String digest = ""; for (int i = 0;i < hash.length;i++) { int v = hash[i] & 0xFF; if (v < 16) digest += "0"; digest += Integer.toString(v,16).toUpperCase(); } return digest;
14、}
catch (Exception e)
{
e.printStackTrace();
return password;
}
}
}
编写完毕后,建议进行测试,避免错误发生。然后把该项目导出成jar包,并且把jar包拷贝到D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\lib下。然后修改上面添加
15、
16、iew\jsp\default\ui\ casGenericSuccess.jsp页面,添加如下内容调转到指定页面 <% response.sendRedirect(".:8080/client/index.action"); %> 5.2 定义自己验证界面 cas给咱们提供了一种"default" 界面,该界面比较简朴,并且也不怎么美丽,因而咱们需要定制自己验证界面。下面简介一下如何设计自己界面。 1 进入D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\view\jsp,把default文献夹复制一份在本目录下,这里我把文献夹修改为coo
17、lszy。 2 进入D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\view\jsp\coolszy\ui。在该目录下你将会看到如下文献: casConfirmView.jsp 在浏览器跳转到顾客想要访问页面之前如果有警告信息,这个页面将会被显示。 casGenericSuccess.jsp 这个页面普通不会被显示,除非咱们直接访问验证服务器验证界面。http://10.12.21.45:8080/cas。 casLoginView.jsp 重点修改页面。这个就是输入验证信息界面。 casLogoutView.jsp 注销界面 s
18、erviceErrorView.jsp 如果顾客想要访问服务没有使用CAS,这个页面将会显示出来。 注意:如果咱们所有业务系统都使用了CAS,这个界面则会没有任何作用。 如果想修改界面,我建议咱们一方面熟悉里面所有jsp页面。重点是casLoginView.jsp尚有includes目录下两个文献。 咱们在修改时尽量不要修改forms和逻辑标签。除非咱们比较熟悉她们。如果咱们定义页面中具有样式表,可直接修改D:\apache-tomcat-6.0.30\webapps\cas\themes\default目录下cas.css文献。固然咱们也可以自己创立一种css文献,个人建议也把文献放
19、到D:\apache-tomcat-6.0.30\webapps\cas\themes中,可新建一种目录例如coolszy。接着咱们要修改jsp页面中引用途径。打开D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\view\jsp\
coolszy\ui\includes\top.jsp文献。找到如下代码:
20、6.0.30\webapps\cas\WEB-INF\classes\cas-theme-default.properties文献中。修改为咱们途径。 引用图片也需要注意相对途径和绝对途径。 3 进入D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\classes目录,复制 default_views.properties,我这里重新命名为coolszy_views.properties。打开该文献,修改页面途径,我这里是把default所有替代为coolszy。 注意:该目录下存在诸多messages_*.properties文献,重要是为了国际
21、化。我把不需要语言给删除掉。同步修改messages_zh_CN.properties文献中信息,使得提示信息更加符合咱们需求。这个文献我是在Eclipse中修改。我Eclipse安装了PropertiesEditor插件。 4 打开D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\cas.properties文献,把 cas.viewResolver.basename=default_views 修改为 cas.viewResolver.basename=coolszy_views 5 启动服务器,测试下效果。有也许显示本来界面,可尝试把D
22、\apache-tomcat-6.0.30\
work\Catalina 目录下文献夹清空掉。
6 服务器端超时配备
打开D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\spring-configuration\目录中
applicationContext.xml文献,修改如下某些信息:
23、/>
修改咱们所需要超时时间。
7 HTTPS验证配备
7.1 普通证书
注:如果电脑上没有设立环境变量JAVA_HOME,请设立完毕后再操作。
7.1.1 创立key
1 进入cmd。输入“cd\”来到系统根目录
2 输入命令
keytool -genkey -alias casserver -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3600
注:参数 -validity 指证书有效期(天),缺省有效期只有90天。其他参数含义请在cmd上输入 24、keytool 回车即可看到。
在生成证书时会让你输入信息,其中“您名字与姓氏是什么?”这个内容必要填写cas服务器所相应域名或者服务器计算机名,我这里使用计算机名:
这样在咱们C盘根目录下生成一种名为server.keystore证书。
7.1.2 将证书导入JDK证书信任库中
1 导出证书,命令如下:
keytool -export -trustcacerts -alias casserver -file server.cer -keystore server.keystore -storepass changeit
注:server.keystore 为咱们上一步生成证 25、书。
2 导入到证书信任库,命令如下:
keytool -import -trustcacerts -alias casserver -file server.cer -keystore "C:\Program Files\Java\jdk1.6.0_21\jre\lib\security\cacerts" -storepass changeit
注:JDK途径依照你电脑安装位置进行修改。此外如果你电脑中安装JRE,还应执行如下命令:
keytool -import -trustcacerts -alias casserver -file server.cer -keystore 26、"C:\Program Files\Java\jre6\lib\security\cacerts" -storepass changeit
3 顺便补充此外两个命令
列出所导入证书
keytool -list -v -keystore "C:\Program Files\Java\jdk1.6.0_21\jre\lib\security\cacerts"
删除存在证书
Keytool -delete -trustcacerts -alias casserver -keystore "C:\Program Files\Java\jdk1.6.0_21\jre\lib\securi 27、ty\cacerts" -storepass changeit
注:如果提示输入密码,则输入:changeit
7.1.3 配备TOMCAT服务器
1 打开D:\apache-tomcat-6.0.30\conf\server.xml 文献,找到:
28、"TLS" />
该内容默认是被注视掉。咱们把该段修改为:
29、eme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="C:\server.keystore"
keystorePass="changeit"/>
其中 keystoreFile为已经生成服务器证书地址
keystorePass为自定义服务器证书密码
7.1.4 测试
打开浏览器输入
:8443/cas/
如果浮现如下警告信息,点击拟定。
7.2 使 30、用CA证书
在某些公司中会使用CA证书进行验证,本节解说如何使用CA证书。
7.2.1 准备工作
使用如下命令把上某些证书从CAS验证服务器和业务服务器上JRE中删除
Keytool -delete -trustcacerts -alias casserver -keystore "C:\Program Files\Java\jdk1.6.0_21\jre\lib\security\cacerts" -storepass changeit
Keytool -delete -trustcacerts -alias casserver -keystore "C:\Pro 31、gram Files\Java\jre6\lib\security\cacerts" -storepass changeit
7.2.2 创立key
在cas验证服务器输入命令
keytool -genkey -alias -keyalg RSA -keysize 2048 -keypass changeit -storepass changeit -keystore coolszy.jks -validity 3600
其中.com为CAS验证服务器相应域名。
在生成证书时会让你输入信息,其中“您名字与姓氏是什么?”这个内容同上:
这样在咱们C盘根目录下生成一种名为coo 32、lszy.jks文献。
7.2.3 创立证书祈求
命令:
keytool -certreq -alias -file coolszy.csr -keystore coolszy.jks -keypass changeit -storepass changeit
7.2.4 申请CA证书
1进入公司CA证书申请网站
2点击“申请一种证书”——“高档证书申请”——“使用 base64 编码 CMC 或 PKCS #10 文献提交 一种证书申请,或使用 base64 编码 PKCS #7 文献续订证书申请。”——
“浏览要插入文献”——选取“C:\coolszy.csr”—— 33、提交”——“选取Base 64 编码”——“下载证书链”——保存certnew.p7b。
7.2.5 导入证书
keytool -import -trustcacerts -alias -file c:\certnew.p7b -keystore coolszy.jks -keypass changeit -storepass changeit
7.2.6 CAS验证服务器端Tomcat配备
修改server.xml,启动启动https;
35、解压cas-client-3.2.0-release.zip到磁盘上,我这里放在D盘中。并且把
D:\cas-client-3.2.0\modules目录中所有jar包拷贝到咱们业务系统中。注意删除重复jar包。
8.1.2 导入证书
a.普通证书
咱们需要把CAS验证服务器上生成server.cer证书导入到咱们业务系统JDK上。
keytool -import -trustcacerts -alias casserver -file server.cer -keystore "C:\Program Files\Java\jdk1.6.0_21\jre\lib\security\c 36、acerts" -storepass changeit
b.使用CA证书
1进入公司CA证书申请网站
2 点击“下载一种 CA 证书,证书链或 CRL”
3 编码方式选取“Base 64”
4 点击“下载 CA 证书”,保存到磁盘上
5 在命令控制台执行如下命令
keytool -import -keystore "C:\Program Files\Java\jre6\lib\security\cacerts" -file c:\certnew.cer -alias -storepass changeit
keytool -import -keystore "C:\P 37、rogram Files\Java\jdk1.6.0_21\jre\lib\security\cacerts" -file c:\certnew.cer -alias -storepass changeit
注意:依照JDK和JRE安装途径进行相应修改,如果没有安装JRE,则第一条命令不需要执行。
8.1.3 配备业务系统web.xml文献
在业务系统web.xml中添加如下配备信息
38、ass>
org.jasig.cas.client.authentication.AuthenticationFilter
39、name>renew
40、8080
41、param-name>
42、am-value>
43、tRequestWrapperFilter
44、filter-name>
45、/url-pattern>
46、布系统,测试。
咱们访问业务系统地址::8080/casclient/
如果浮现如下警告信息,点击“继续浏览此网站(不推荐)。”
然后咱们输入顾客名和密码,登录成功。
8.2 C#版本
9 获取登录顾客信息
9.1 获得登录顾客名
在进行认证时,咱们需要输入顾客名和密码。怎么才干获得咱们输入顾客名呢?通过下面这两句代码,咱们就可以得到顾客名信息。
AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
String username = principal.getNam 47、e();//获取顾客名
9.2 获取更全面顾客信息
之前咱们假设顾客验证信息存储在t_login表中,表构造如下:
ID
USERNAME
PASSWORD
1
coolszy
123456
这张表中有三个字段。假设当前还存在此外一张表t_user。该表记录了顾客详细信息。咱们可以通过上一节办法获取username值到t_user表中进行查询,这样咱们就可以获得更详细顾客信息。
但是如果咱们t_login表构造如下:
ID
USERNAME
PASSWORD
NAME
1
coolszy
123456
张三
在登录成功后,咱们但愿在页面上显示NA 48、ME值,这该怎么获取呢?
1一方面,打开D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\deployerConfigContext.xml文献
找到如下配备信息:






