收藏 分销(赏)

CAS配置基础手册专业资料.doc

上传人:w****g 文档编号:2954951 上传时间:2024-06-12 格式:DOC 页数:33 大小:400.54KB 下载积分:12 金币
下载 相关 举报
CAS配置基础手册专业资料.doc_第1页
第1页 / 共33页
CAS配置基础手册专业资料.doc_第2页
第2页 / 共33页


点击查看更多>>
资源描述
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验证服务器配备 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,显示登录界面。输入顾客名和密码(顾客名和密码相等即可),登录成功。这样最简朴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文献 在<bean id="authenticationManager"节点上面添加数据源信息: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value> oracle.jdbc.driver.OracleDriver </value> </property> <property name="url"> <value> jdbc:oracle:thin:@10.12.21.140:1521:orcl </value> </property> <property name="username"> <value>scott</value> </property> <property name="password"> <value>tiger</value> </property> </bean> 在该文献中搜索“SimpleTestUsernamePasswordAuthenticationHandler” <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"/> 这是cas提供最简朴验证方式,即顾客名和密码相等即可登录成功。 现假设咱们登录顾客名和密码存在于t_login表中,信息如下: ID USERNAME PASSWORD 1 coolszy 123456 把上面bean给注销掉,添加如下信息: <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="sql" value="select password from t_login where username=?" /> <property name="dataSource" ref="dataSource" /> </bean> 重启服务器,测试。固然咱们还可以指定表和字段 <bean class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler" abstract="false" lazy-init="default" autowire="default"> <property name="dataSource" ref="dataSource" /> <property name="tableUsers" value="t_login" /> <property name="fieldUser" value="username"/> <property name="fieldPassword" value="password"/> </bean> 4.2 密码已密文存在数据库中 以上配备只适合密码已明文方式存储在数据库中,但是实际中咱们密码都是通过加密。下面演示下如果使用MD5加密密码。 一方面配备MD5,该配备信息放在数据源配备下面。 <bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"> <constructor-arg value="MD5"/> </bean> 然后修改上面数据库验证配备,添加密码加密方式,修改后如下: <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="sql" value="select password from t_login where username=?" /> <property name="dataSource" ref="dataSource" /> <property name="passwordEncoder" ref="passwordEncoder"/> </bean> 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)办法,这是用来对输入密码进行加密,我这里命名为:PasswordEncrypt 3 在encode()办法中可以依照实际加密方式编写代码。 package szy.cas.encrypt; import java.security.MessageDigest; 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"); 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; } catch (Exception e) { e.printStackTrace(); return password; } } } 编写完毕后,建议进行测试,避免错误发生。然后把该项目导出成jar包,并且把jar包拷贝到D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\lib下。然后修改上面添加 <bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"> <constructor-arg value="MD5"/> </bean> 把class修改为咱们加密类,即 <bean id="passwordEncoder" class="szy.cas.encrypt.PasswordEncrypt"> <!-- <constructor-arg value="MD5"/> --> </bean> 测试,成功。 5 修改界面 5.1 修改验证通过后显示提示信息界面 修改D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\view\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文献夹复制一份在本目录下,这里我把文献夹修改为coolszy。 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 注销界面 serviceErrorView.jsp 如果顾客想要访问服务没有使用CAS,这个页面将会显示出来。 注意:如果咱们所有业务系统都使用了CAS,这个界面则会没有任何作用。 如果想修改界面,我建议咱们一方面熟悉里面所有jsp页面。重点是casLoginView.jsp尚有includes目录下两个文献。 咱们在修改时尽量不要修改forms和逻辑标签。除非咱们比较熟悉她们。如果咱们定义页面中具有样式表,可直接修改D:\apache-tomcat-6.0.30\webapps\cas\themes\default目录下cas.css文献。固然咱们也可以自己创立一种css文献,个人建议也把文献放到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文献。找到如下代码: <spring:theme code="standard.custom.css.file" var="customCssFile" /> 咱们需要standard.custom.css.file值。该值存在于 D:\apache-tomcat-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文献,重要是为了国际化。我把不需要语言给删除掉。同步修改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:\apache-tomcat-6.0.30\ work\Catalina 目录下文献夹清空掉。 6 服务器端超时配备 打开D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\spring-configuration\目录中 applicationContext.xml文献,修改如下某些信息: <bean id="httpClient" class="org.jasig.cas.util.HttpClient" p:readTimeout="5000" p:connectionTimeout="5000"/> 修改咱们所需要超时时间。 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上输入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 Files\Java\jdk1.6.0_21\jre\lib\security\cacerts" -storepass changeit 注:JDK途径依照你电脑安装位置进行修改。此外如果你电脑中安装JRE,还应执行如下命令: keytool -import -trustcacerts -alias casserver -file server.cer -keystore "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\security\cacerts" -storepass changeit 注:如果提示输入密码,则输入:changeit 7.1.3 配备TOMCAT服务器 1 打开D:\apache-tomcat-6.0.30\conf\server.xml 文献,找到: <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> 该内容默认是被注视掉。咱们把该段修改为: <Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" minSpareThreads="5" maxSpareThreads="75" enableLookups="true" disableUploadTimeout="true" acceptCount="100" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" clientAuth="false" sslProtocol="TLS" keystoreFile="C:\server.keystore" keystorePass="changeit"/> 其中 keystoreFile为已经生成服务器证书地址 keystorePass为自定义服务器证书密码 7.1.4 测试 打开浏览器输入 :8443/cas/ 如果浮现如下警告信息,点击拟定。 7.2 使用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:\Program 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盘根目录下生成一种名为coolszy.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”——“提交”——“选取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; <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keyAlias="" keystoreFile="C:\coolszy.jks" keypass="changeit" /> 8 业务系统配备 8.1 JAVA版本 8.1.1 添加jar包 解压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\cacerts" -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:\Program 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中添加如下配备信息 <!-- CAS 客户端配备 --> <filter> <filter-name>CAS Authentication Filter</filter-name> <filter-class> org.jasig.cas.client.authentication.AuthenticationFilter </filter-class> <!-- CAS验证服务器地址,有域名填写域名 --> <init-param> <param-name>casServerLoginUrl</param-name> <param-value> https://10.12.21.46:8443/cas/login </param-value> </init-param> <init-param> <param-name>renew</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>gateway</param-name> <param-value>false</param-value> </init-param> <!-- 客户端应用服务器地址--> <init-param> <param-name>serverName</param-name> <param-value>http://10.12.21.140:8080</param-value> </init-param> </filter> <!--负责Ticket校验--> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class> org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter </filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://IMC-Server:8443/cas/</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://10.12.21.140:8080</param-value> </init-param> <init-param> <param-name>useSession</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>redirectAfterValidation</param-name> <param-value>true</param-value> </init-param> </filter> <filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class> org.jasig.cas.client.util.HttpServletRequestWrapperFilter </filter-class> </filter> <filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class> org.jasig.cas.client.util.AssertionThreadLocalFilter </filter-class> </filter> <filter-mapping> <filter-name>CAS Authentication Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 注:蓝色某些依照实际状况做相应修改。红色某些高亮IMC-Server是咱们在生成证书时填写“您名字与姓氏是什么?”。8433为Tomcat上SSL端口,在在现实中咱们普通使用80端口。如果使用80端口,则端标语不需要写在配备文献上。 8.1.4 发布系统,测试。 咱们访问业务系统地址::8080/casclient/ 如果浮现如下警告信息,点击“继续浏览此网站(不推荐)。” 然后咱们输入顾客名和密码,登录成功。 8.2 C#版本 9 获取登录顾客信息 9.1 获得登录顾客名 在进行认证时,咱们需要输入顾客名和密码。怎么才干获得咱们输入顾客名呢?通过下面这两句代码,咱们就可以得到顾客名信息。 AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal(); String username = principal.getName();//获取顾客名 9.2 获取更全面顾客信息 之前咱们假设顾客验证信息存储在t_login表中,表构造如下: ID USERNAME PASSWORD 1 coolszy 123456 这张表中有三个字段。假设当前还存在此外一张表t_user。该表记录了顾客详细信息。咱们可以通过上一节办法获取username值到t_user表中进行查询,这样咱们就可以获得更详细顾客信息。 但是如果咱们t_login表构造如下: ID USERNAME PASSWORD NAME 1 coolszy 123456 张三 在登录成功后,咱们但愿在页面上显示NAME值,这该怎么获取呢? 1一方面,打开D:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\deployerConfigContext.xml文献 找到如下配备信息: <!-- Bean that defines the attributes that a service may return. This example uses the Stub/Mock version. A real implementation may go against a database or LDAP server. The id should remain "attributeRepository" though. --> <bean id="attributeRepository" class="org.jasig.services.persondir.support.StubPersonAttributeDao"> <property name="backingMap"> <map> <entry key="uid" value="uid" /> <entry key="eduPersonAffiliation" value="eduPersonAffiliation" /> <entry key="groupMembership" value="groupMembership" /> </map> </property> </bean> 注意看一下上面注释信息。咱们把该段信息修改如下: <bean class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao"
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服