CAS配置手册.doc_第1页
CAS配置手册.doc_第2页
CAS配置手册.doc_第3页
CAS配置手册.doc_第4页
CAS配置手册.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CAS配置手册1 准备工具1 cas-server-3.4.5-release.zip:/cas/2 cas-client-3.2.0-release.zip:/cas-clients/2 配置环境CAS 服务器信息计算机名:IMC-Server操作系统:Windows 2003 SP2JDK:jdk1.6.0_21Tomcat:apache-tomcat-6.0.30浏览器:IE6IP地址:5CAS客户端信息IP地址:40Oracle数据库信息IP地址:40用户名:scott密码:tiger3 CAS验证服务器配置1 解压cas-server-3.4.5-release.zip到磁盘(我的路径为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。在浏览器中输入5:8080/cas,显示登录界面。输入用户名和密码(用户名和密码相等即可),登录成功。这样最简单的CAS验证服务器搭配成功。4 数据库验证方式4.1 密码已明文存在数据库中1 复制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:40:1521:orcl scott tiger 在该文件中搜索“SimpleTestUsernamePasswordAuthenticationHandler”这是cas提供的最简单的验证方式,即用户名和密码相等即可登录成功。现假设我们的登录用户名和密码存在于t_login表中,信息如下: IDUSERNAMEPASSWORD1coolszy123456把上面的bean给注销掉,添加如下信息:重启服务器,测试。当然我们还可以指定表和字段 4.2 密码已密文存在数据库中 以上的配置只适合密码已明文的方式存储在数据库中,但是实际中我们的密码都是经过加密的。下面演示下如果使用MD5加密密码。 首先配置MD5,该配置信息放在数据源配置的下面。 然后修改上面的数据库验证配置,添加密码加密方式,修改后如下: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()方法中可以根据实际的加密方式编写代码。package szy.cas.encrypt;import java.security.MessageDigest;import org.jasig.cas.authentication.handler.PasswordEncoder;/* * author coolszy * date Jan 21, 2011 */public class PasswordEncrypt implements PasswordEncoderpublic String encode(String password)tryMessageDigest alg = MessageDigest.getInstance(SHA-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;编写完毕后,建议进行测试,避免错误发生。然后把该项目导出成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 界面,该界面比较简单,而且也不怎么漂亮,因此我们需要定制自己的验证界面。下面介绍一下如何设计自己的界面。1 进入D:apache-tomcat-6.0.30webappscasWEB-INFviewjsp,把default文件夹复制一份在本目录下,这里我把文件夹修改为coolszy。2 进入D:apache-tomcat-6.0.30webappscasWEB-INFviewjspcoolszyui。在该目录下你将会看到如下文件:casConfirmView.jsp 在浏览器跳转到用户想要访问的页面之前如果有警告信息,这个页面将会被显示。casGenericSuccess.jsp这个页面一般不会被显示,除非我们直接访问验证服务器的验证界面。5:8080/cas。casLoginView.jsp重点修改的页面。这个就是输入验证信息的界面。casLogoutView.jsp注销界面serviceErrorView.jsp如果用户想要访问的服务没有使用CAS,这个页面将会显示出来。注意:如果我们所有的业务系统都使用了CAS,这个界面则会没有任何作用。如果想修改界面,我建议我们首先熟悉里面所有的jsp页面。重点是casLoginView.jsp还有includes目录下的两个文件。我们在修改时尽量不要修改forms和逻辑标签。除非我们比较熟悉他们。如果我们定义的页面中含有样式表,可直接修改D:apache-tomcat-6.0.30webappscasthemesdefault目录下的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-INFperties文件中。修改为我们的路径。引用的图片也需要注意相对路径和绝对路径。3 进入D:apache-tomcat-6.0.30webappscasWEB-INFclasses目录,复制default_perties,我这里重新命名为coolszy_perties。打开该文件,修改页面路径,我这里是把default全部替换为coolszy。注意:该目录下存在很多messages_*.properties文件,主要是为了国际化。我把不需要的语言给删除掉。同时修改messages_zh_CN.properties文件中的信息,使得提示信息更加符合我们的需求。这个文件我是在Eclipse中修改的。我的Eclipse安装了PropertiesEditor插件。4 打开D:apache-tomcat-6.0.30webappscasWEB-INFperties文件,把cas.viewResolver.basename=default_views 修改为cas.viewResolver.basename=coolszy_views5 启动服务器,测试下效果。有可能显示原来的界面,可尝试把D:apache-tomcat-6.0.30workCatalina 目录下的文件夹清空掉。6 服务器端超时配置打开D:apache-tomcat-6.0.30webappscasWEB-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 3600注:参数 -validity 指证书的有效期(天),缺省有效期只有90天。其它参数含义请在cmd上输入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 为我们上一步生成的证书。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 server.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 -storepass changeit注:如果提示输入密码,则输入:changeit7.1.3 配置TOMCAT服务器1 打开D:apache-tomcat-6.0.30confserver.xml 文件,找到:该内容默认是被注视掉。我们把该段修改为:其中 keystoreFile为已经生成的服务器证书的地址 keystorePass为自定义的服务器证书的密码7.1.4 测试打开浏览器输入5:8443/cas/如果出现如下警告信息,点击确定。7.2 使用CA证书在一些企业中会使用CA证书进行验证,本节讲解如何使用CA证书。7.2.1 准备工作使用如下命令把上一些的证书从CAS验证服务器和业务服务器上的JRE中删除Keytool -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 -keysize 2048 -keypass changeit -storepass changeit -keystore coolszy.jks -validity 3600其中为CAS验证服务器的对应的域名。在生成证书时会让你输入信息,其中“您的名字与姓氏是什么?”这个内容同上:这样在我们的C盘根目录下生成一个名为coolszy.jks的文件。7.2.3 创建证书请求命令:keytool -certreq -alias -file coolszy.csr -keystore coolszy.jks -keypass changeit -storepass changeit7.2.4 申请CA证书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.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 -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 -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.AuthenticationFiltercasServerLoginUrl6:8443/cas/loginrenewfalsegatewayfalseserverName40:8080CAS Validation Filterorg.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFiltercasServerUrlPrefixhttps:/IMC-Server:8443/cas/serverName40:8080useSessiontrueredirectAfterValidationtrueCAS 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 Filter/*注:蓝色的部分根据实际情况做相应的修改。红色部分高亮IMC-Server是我们在生成证书时填写的“您的名字与姓氏是什么?”。8433为Tomcat上的SSL端口,在在现实中我们一般使用80端口。如果使用80端口,则端口号不需要写在配置文件上。8.1.4 发布系统,测试。我们访问业务系统地址:40:8080/casclient/如果出现如下警告信息,点击“继续浏览此网站(不推荐)。”然后我们输入用户名和密码,登录成功。8.2 C#版本9 获取登录用户信息9.1 获得登录用户名在进行认证时,我们需要输入用户名和密码。怎么才能获得我们输入的用户名呢?通过下面的这两句代码,我们就可以得到用户名信息。AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();String username = principal.getName();/获取用户名9.2 获取更全面用户信息之前我们假设用户的验证信息存储在t_login表中,表结构如下: IDUSERNAMEPASSWORD1coolszy123456这张表中有三个字段。假设现在还存在另外一张表t_user。该表记录了用户的详细信息。我们可以通过上一节的方法获取username的值到t_user表中进行查询,这样我们就可以获得更详细的用户信息。但是如果我们的t_login表的结构如下:IDUSERNAMEPASSWORDNAME1coolszy123456张三在登录成功后,我们希望在页面上显示NAME的值,这该怎么获取呢?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论