CAS的客户端与服务器配置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.生成证书并配置服务器:(域名:)
第一步:为服务器生成证书:(C:\Program Files\Java\jdk1.6.0_19\bin>)
keytool -genkey -v -alias server -keyalg RSA -validity 365 -keystore D:\pccw.keystore -dname "CN=,OU=cn,O=cn,L=cn,ST=cn,C=cn" -storepass 111111 -keypass 111111 //其中CN的值为域名
第二步:为客户端生成证书:(C:\Program Files\Java\jdk1.6.0_19\bin>)
keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore D:\pccw.p12 -dname "CN=,OU=cn,L=cn,ST=cn,C=cn" -storepass 111111 -keypass 111111
第三步:让服务器信任客户端证书:(C:\Program Files\Java\jdk1.6.0_19\bin>)
keytool -export -alias client -keystore D:\pccw.p12 -storetype PKCS12 -storepass 111111 -rfc -file d:\pccw.cer
第四步:将该文件导入到服务器的证书库,添加为一个信任证书:(C:\Program Files\Java\jdk1.6.0_19\bin>)
keytool -import -v -file D:\pccw.cer -keystore D:\pccw.keystore -storepass 111111
keytool -import -alias pccw -keystore cacerts -file D:\pccw.cer -trustcacerts
第五步:通过list命令查看服务器的证书库,我们可以看到两个输入,一个是服务器证书,一个是受信任的客户端证书L:(C:\Program Files\Java\jdk1.6.0_19\bin>)
keytool -list -keystore D:\pccw.keystore -storepass 111111
完成后将生成的.keystore文件放到Tomcat中的conf目录下
修改Tomcat中的srever.xml文件:
这段代码本来是注释掉的,把注释去掉,并且加上两个属性之后,如下:
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
keystoreFile="conf/odc.keystore" keystorePass="111111"
clientAuth="false" sslProtocol="TLS"/>
//keystoreFile="conf/server.keystore" 根据实际路径改写
//keystorePass="111111" 设置密码
将cas-server-3.4.8\modules中的cas-server-webapp-3.4.8.war复制到Tomcat中的webapps目录下,并改名为cas.war
开启服务器并输入https://localhost:8443/cas查看是否显示页面
P.S. 删除:keytool -delete -trustcacerts -alias tomcat -keystore D:/sdks/jdk1.5.0_11/jre/lib/security/cacerts -storepass changeit 、
二.部署客户端:
A为cas服务器
B为其他电脑上的应用
在B电脑中作如下操作:
像前面一样生成证书文件
下载InstallCert.java文件,javac编译,生成两个文件(InstallCert$SavingTrustManager.class 和InstallCert.class),
运行"java InstallCert compA:8443"命令,并且在接下来出现的询问中输入1
这样,就将A 添加到了B 的trust store 中。
(如果多个客户端应用分别部署在不同机器上,那么每个机器都需要与CAS Server 所在机器建立信任关系。
)
那么进行上面这个步骤以后,会有一个jsscacerts的文件
记住:移动jsscacerts文件到$JA V A_HOME/jre/lib/security中,也就是和cacerts这个文件在同一个目录。
下载一个cas-client-2.1.1.zip包,解压后将cas-client-2.1.1/dist目录下的casclient.jar这个包复制到B电脑中应用中WEB-INF/lib 下,
并编辑“应用”/WEB-INF/web.xml文件,添加以下代码
<filter>
<filter-name>CAS Filter</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://domainA:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://domainA:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>domainB:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/protected-pattern/*</url-pattern>
</filter-mapping>
注:其中的domainA和domainB最好为域名
现在打开http://domainB:8080/应用名
浏览器会弹出安全提示,接受后即转到CAS 的登录页面,
填入前面你在数据库里面设定的用户名和密码,好了,页面就转到jsp-examples/index.html 了。
其实就是你访问这个页面中间去SERVER上验证了一下,又回头了。
CAS 提供了一个CASFilterRequestWrapper 类,该类继承自HttpServletRequestWrapper,主要是重写了getRemoteUser() 方法,
只要在前面配置CASFilter 的时候为其设置"edu.yale.its.tp.cas.client.filter.wrapRequest"参数为true,
就可以通过getRemoteUser()方法来获取登录用户名,具体方法如如下代码所示:
通过CASFilterRequestWrapper 获取登录用户名
CASFilterRequestWrapper reqWrapper=new CASFilterRequestWrapper(request);
out.println("The logon user:" + reqWrapper.getRemoteUser());
keytool -import -alias cacerts -keystore cacerts -file D:\pccw.cer -trustcacerts
keytool -import -keystore %JA V A_HOME%\jre\lib\security\cacerts -file pccw.crt -alias tomcat。