1、CAS配备手册1 准备工具1 cas-server-3.4.5-release.zip:2 cas-client-3.2.0-release.zip:2 配备环境CAS 服务器信息计算机名:IMC-Server操作系统:Windows SP2JDK:jdk1.6.0_21Tomcat:apache-tomcat-6.0.30浏览器:IE6IP地址:10.12.21.45CAS客户端信息IP地址:10.12.21.140Oracle数据库信息IP地址:10.12.21.140顾客名:scott密码:tiger3 CAS验证服务器配备1 解压cas-server-3.4.5-release.zip
2、到磁盘(我途径为D:cas-server-3.4.5),进入D:cas-server-3.4.5modules文献夹下,把cas-server-webapp-3.4.5.war拷贝到Tomcat安装目录(我途径为D:apache-tomcat-6.0.30)webapps文献夹下。为了以便在浏览器中浏览,把cas-server-webapp-3.4.5.war文献名修改为cas.war2 运营Tomcat。在浏览器中输入:8080/cas,显示登录界面。输入顾客名和密码(顾客名和密码相等即可),登录成功。这样最简朴CAS验证服务器搭配成功。4 数据库验证方式4.1 密码已明文存在数据库中1 复
3、制D:cas-server-3.4.5modules下面所有jar包到D:apache-tomcat-6.0.30webappscasWEB-INFlib下。数据库为Oracle,因而把Oracle驱动包也复制到lib文献夹下。注意删除重复jar包。2 打开D:apache-tomcat-6.0.30webappscasWEB-INFdeployerConfigContext.xml文献在bean id=authenticationManager节点上面添加数据源信息: oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:10.12.21.140:
4、1521:orcl scott tiger 在该文献中搜索“SimpleTestUsernamePasswordAuthenticationHandler”这是cas提供最简朴验证方式,即顾客名和密码相等即可登录成功。现假设咱们登录顾客名和密码存在于t_login表中,信息如下: IDUSERNAMEPASSWORD1coolszy123456把上面bean给注销掉,添加如下信息:重启服务器,测试。固然咱们还可以指定表和字段 4.2 密码已密文存在数据库中 以上配备只适合密码已明文方式存储在数据库中,但是实际中咱们密码都是通过加密。下面演示下如果使用MD5加密密码。 一方面配备MD5,该配备信
5、息放在数据源配备下面。 然后修改上面数据库验证配备,添加密码加密方式,修改后如下:4.3 使用自己编写加密类上面简介了密码采用MD5加密配备方式,下面简介下如果使用咱们自己编写加密类。1 新建一种Java项目,cas-server-core-3.4.5.jar包,2 新建一种Java类,实现org.jasig.cas.authentication.handler.PasswordEncoder接口中public String encode(String arg0)办法,这是用来对输入密码进行加密,我这里命名为:PasswordEncrypt3 在encode()办法中可以依照实际加密方式编写代
6、码。package szy.cas.encrypt;import java.security.MessageDigest;import org.jasig.cas.authentication.handler.PasswordEncoder;/* * author coolszy * date Jan 21, */public class PasswordEncrypt implements PasswordEncoderpublic String encode(String password)tryMessageDigest alg = MessageDigest.getInstance(S
7、HA-1);alg.reset();alg.update(password.getBytes();byte hash = alg.digest();String digest = ;for (int i = 0;i hash.length;i+)int v = hashi & 0xFF;if (v 16)digest += 0;digest += Integer.toString(v,16).toUpperCase();return digest; catch (Exception e)e.printStackTrace();return password;编写完毕后,建议进行测试,避免错误发
8、生。然后把该项目导出成jar包,并且把jar包拷贝到D:apache-tomcat-6.0.30webappscasWEB-INFlib下。然后修改上面添加 把class修改为咱们加密类,即 !- -测试,成功。5 修改界面5.1 修改验证通过后显示提示信息界面修改D:apache-tomcat-6.0.30webappscasWEB-INFviewjspdefaultuicasGenericSuccess.jsp页面,添加如下内容调转到指定页面5.2 定义自己验证界面cas给咱们提供了一种default 界面,该界面比较简朴,并且也不怎么美丽,因而咱们需要定制自己验证界面。下面简介一下如何设
9、计自己界面。1 进入D:apache-tomcat-6.0.30webappscasWEB-INFviewjsp,把default文献夹复制一份在本目录下,这里我把文献夹修改为coolszy。2 进入D:apache-tomcat-6.0.30webappscasWEB-INFviewjspcoolszyui。在该目录下你将会看到如下文献:casConfirmView.jsp 在浏览器跳转到顾客想要访问页面之前如果有警告信息,这个页面将会被显示。casGenericSuccess.jsp这个页面普通不会被显示,除非咱们直接访问验证服务器验证界面。http:/10.12.21.45:8080/c
10、as。casLoginView.jsp重点修改页面。这个就是输入验证信息界面。casLogoutView.jsp注销界面serviceErrorView.jsp如果顾客想要访问服务没有使用CAS,这个页面将会显示出来。注意:如果咱们所有业务系统都使用了CAS,这个界面则会没有任何作用。如果想修改界面,我建议咱们一方面熟悉里面所有jsp页面。重点是casLoginView.jsp尚有includes目录下两个文献。咱们在修改时尽量不要修改forms和逻辑标签。除非咱们比较熟悉她们。如果咱们定义页面中具有样式表,可直接修改D:apache-tomcat-6.0.30webappscasthemes
11、default目录下cas.css文献。固然咱们也可以自己创立一种css文献,个人建议也把文献放到D:apache-tomcat-6.0.30webappscasthemes中,可新建一种目录例如coolszy。接着咱们要修改jsp页面中引用途径。打开D:apache-tomcat-6.0.30webappscasWEB-INFviewjspcoolszyuiincludestop.jsp文献。找到如下代码:咱们需要standard.custom.css.file值。该值存在于D:apache-tomcat-6.0.30webappscasWEB-INFclassescas-theme-def
12、ault.properties文献中。修改为咱们途径。引用图片也需要注意相对途径和绝对途径。3 进入D:apache-tomcat-6.0.30webappscasWEB-INFclasses目录,复制default_views.properties,我这里重新命名为coolszy_views.properties。打开该文献,修改页面途径,我这里是把default所有替代为coolszy。注意:该目录下存在诸多messages_*.properties文献,重要是为了国际化。我把不需要语言给删除掉。同步修改messages_zh_CN.properties文献中信息,使得提示信息更加符合咱们
13、需求。这个文献我是在Eclipse中修改。我Eclipse安装了PropertiesEditor插件。4 打开D:apache-tomcat-6.0.30webappscasWEB-INFcas.properties文献,把cas.viewResolver.basename=default_views 修改为cas.viewResolver.basename=coolszy_views5 启动服务器,测试下效果。有也许显示本来界面,可尝试把D:apache-tomcat-6.0.30workCatalina 目录下文献夹清空掉。6 服务器端超时配备打开D:apache-tomcat-6.0.3
14、0webappscasWEB-INFspring-configuration目录中applicationContext.xml文献,修改如下某些信息:修改咱们所需要超时时间。7 HTTPS验证配备7.1 普通证书注:如果电脑上没有设立环境变量JAVA_HOME,请设立完毕后再操作。7.1.1 创立key1 进入cmd。输入“cd”来到系统根目录2 输入命令keytool -genkey -alias casserver -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 36
15、00注:参数 -validity 指证书有效期(天),缺省有效期只有90天。其他参数含义请在cmd上输入keytool 回车即可看到。在生成证书时会让你输入信息,其中“您名字与姓氏是什么?”这个内容必要填写cas服务器所相应域名或者服务器计算机名,我这里使用计算机名:这样在咱们C盘根目录下生成一种名为server.keystore证书。7.1.2 将证书导入JDK证书信任库中1 导出证书,命令如下:keytool -export -trustcacerts -alias casserver -file server.cer -keystore server.keystore -storepas
16、s changeit注:server.keystore 为咱们上一步生成证书。2 导入到证书信任库,命令如下:keytool -import -trustcacerts -alias casserver -file server.cer -keystore C:Program FilesJavajdk1.6.0_21jrelibsecuritycacerts -storepass changeit注:JDK途径依照你电脑安装位置进行修改。此外如果你电脑中安装JRE,还应执行如下命令:keytool -import -trustcacerts -alias casserver -file ser
17、ver.cer -keystore C:Program FilesJavajre6libsecuritycacerts -storepass changeit3 顺便补充此外两个命令列出所导入证书keytool -list -v -keystore C:Program FilesJavajdk1.6.0_21jrelibsecuritycacerts删除存在证书Keytool -delete -trustcacerts -alias casserver -keystore C:Program FilesJavajdk1.6.0_21jrelibsecuritycacerts -storepas
18、s changeit注:如果提示输入密码,则输入:changeit7.1.3 配备TOMCAT服务器1 打开D:apache-tomcat-6.0.30confserver.xml 文献,找到:该内容默认是被注视掉。咱们把该段修改为:其中 keystoreFile为已经生成服务器证书地址 keystorePass为自定义服务器证书密码7.1.4 测试打开浏览器输入:8443/cas/如果浮现如下警告信息,点击拟定。7.2 使用CA证书在某些公司中会使用CA证书进行验证,本节解说如何使用CA证书。7.2.1 准备工作使用如下命令把上某些证书从CAS验证服务器和业务服务器上JRE中删除Keytoo
19、l -delete -trustcacerts -alias casserver -keystore C:Program FilesJavajdk1.6.0_21jrelibsecuritycacerts -storepass changeitKeytool -delete -trustcacerts -alias casserver -keystore C:Program FilesJavajre6libsecuritycacerts -storepass changeit7.2.2 创立key在cas验证服务器输入命令keytool -genkey -alias -keyalg RSA -
20、keysize 2048 -keypass changeit -storepass changeit -keystore coolszy.jks -validity 3600其中.com为CAS验证服务器相应域名。在生成证书时会让你输入信息,其中“您名字与姓氏是什么?”这个内容同上:这样在咱们C盘根目录下生成一种名为coolszy.jks文献。7.2.3 创立证书祈求命令:keytool -certreq -alias -file coolszy.csr -keystore coolszy.jks -keypass changeit -storepass changeit7.2.4 申请CA证
21、书1进入公司CA证书申请网站2点击“申请一种证书”“高档证书申请”“使用 base64 编码 CMC 或 PKCS #10 文献提交 一种证书申请,或使用 base64 编码 PKCS #7 文献续订证书申请。”“浏览要插入文献”选取“C:coolszy.csr”“提交”“选取Base 64 编码”“下载证书链”保存certnew.p7b。7.2.5 导入证书keytool -import -trustcacerts -alias -file c:certnew.p7b -keystore coolszy.jks -keypass changeit -storepass changeit7.2
22、.6 CAS验证服务器端Tomcat配备修改server.xml,启动启动https; 8 业务系统配备8.1 JAVA版本8.1.1 添加jar包解压cas-client-3.2.0-release.zip到磁盘上,我这里放在D盘中。并且把D:cas-client-3.2.0modules目录中所有jar包拷贝到咱们业务系统中。注意删除重复jar包。8.1.2 导入证书a.普通证书咱们需要把CAS验证服务器上生成server.cer证书导入到咱们业务系统JDK上。keytool -import -trustcacerts -alias casserver -file server.cer -
23、keystore C:Program FilesJavajdk1.6.0_21jrelibsecuritycacerts -storepass changeitb.使用CA证书1进入公司CA证书申请网站2 点击“下载一种 CA 证书,证书链或 CRL”3 编码方式选取“Base 64”4 点击“下载 CA 证书”,保存到磁盘上5 在命令控制台执行如下命令keytool -import -keystore C:Program FilesJavajre6libsecuritycacerts -file c:certnew.cer -alias -storepass changeitkeytool
24、-import -keystore C:Program FilesJavajdk1.6.0_21jrelibsecuritycacerts -file c:certnew.cer -alias -storepass changeit注意:依照JDK和JRE安装途径进行相应修改,如果没有安装JRE,则第一条命令不需要执行。8.1.3 配备业务系统web.xml文献 在业务系统web.xml中添加如下配备信息CAS Authentication Filterorg.jasig.cas.client.authentication.AuthenticationFiltercasServerLoginU
25、rlhttps:/10.12.21.46:8443/cas/loginrenewfalsegatewayfalseserverNamehttp:/10.12.21.140:8080CAS Validation Filterorg.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFiltercasServerUrlPrefixhttps:/IMC-Server:8443/cas/serverNamehttp:/10.12.21.140:8080useSessiontrueredirectAfterValidationt
26、rueCAS HttpServletRequest Wrapper Filterorg.jasig.cas.client.util.HttpServletRequestWrapperFilterCAS Assertion Thread Local Filterorg.jasig.cas.client.util.AssertionThreadLocalFilterCAS Authentication Filter/*CAS Validation Filter/*CAS HttpServletRequest Wrapper Filter/*CAS Assertion Thread Local Fi
27、lter/*注:蓝色某些依照实际状况做相应修改。红色某些高亮IMC-Server是咱们在生成证书时填写“您名字与姓氏是什么?”。8433为Tomcat上SSL端口,在在现实中咱们普通使用80端口。如果使用80端口,则端标语不需要写在配备文献上。8.1.4 发布系统,测试。咱们访问业务系统地址::8080/casclient/如果浮现如下警告信息,点击“继续浏览此网站(不推荐)。”然后咱们输入顾客名和密码,登录成功。8.2 C#版本9 获取登录顾客信息9.1 获得登录顾客名在进行认证时,咱们需要输入顾客名和密码。怎么才干获得咱们输入顾客名呢?通过下面这两句代码,咱们就可以得到顾客名信息。Attr
28、ibutePrincipal principal = (AttributePrincipal) request.getUserPrincipal();String username = principal.getName();/获取顾客名9.2 获取更全面顾客信息之前咱们假设顾客验证信息存储在t_login表中,表构造如下: IDUSERNAMEPASSWORD1coolszy123456这张表中有三个字段。假设当前还存在此外一张表t_user。该表记录了顾客详细信息。咱们可以通过上一节办法获取username值到t_user表中进行查询,这样咱们就可以获得更详细顾客信息。但是如果咱们t_login表构造如下:IDUSERNAMEPASSWORDNAME1coolszy123456张三在登录成功后,咱们但愿在页面上显示NAME值,这该怎么获取呢?1一方面,打开D:apache-tomcat-6.0.30webappscasWEB-INFdeployerConfigContext.xml文献找到如下配备信息: 注意看一下上面注释信息。咱们把该段信息修改如下:bean class=org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao