第一步:下载包
从CAS官网分别下载CAS Server和CAS Client .这儿我下载的是cas-server-3.2.1-release.zip、cas-client-3.2.1-release.zip。
从Tomcat官网下载tomcat7.0 我这儿下载的是apache-tomcat-7.0.52
JDK用的是1.6(已安装,这边就不介绍了)
第二步:Tomcat支持SSL
(1)把tomcat7.0包解压。如:放在D:\apache-tomcat-7.0.52
(2) 运行cmd.通过 java的keytool生成工具证书。可以参考我的上篇文章【收藏】java keytool证书工具使用来生成。
如:C:\Documents and Settings\Administrator>keytool -genkey -alias tomcatkey -keyalg RSA -keysize 1024 -keypass 123456 -validity 365 -keystore C:\tomcat.keystore -storepass 123456
(3)配置tomcat/conf/server.xml中的
修改为
<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:/tomcat.keystore"
keystorePass="123456" />
第三步:部署cas server中的war包到tomcat中
先解压cas-server-3.2.1-release.zip.然后\cas-server-3.2.1\modules中找到cas-server-webapp-3.2.1.war,修改为cas.war 并部署到tomcat中。
最后重启tomat.访问 https://127.0.0.1:8443/cas若跳转到登录页面,表示部署成功。
注意:若报500错误:则修改apache-tomcat-7.0.52\webapps\cas\WEB-INF\view\jsp\default\ui\casLoginView.jsp的<c:set var="query" value="<%=request.getQueryString() == null ? "" : request.getQueryString().replaceAll("&locale=[A-Za-z][A-Za-z]^locale=[A-Za-z][A-Za-z]", "")%>" />
改为:
<c:set var="query" value='<%=request.getQueryString() == null ? "" : request.getQueryString().replaceAll("&locale=[A-Za-z][A-Za-z]^locale=[A-Za-z][A-Za-z]", "")%>' />
OK,改完后再次访问https://127.0.0.1:8443/cas就能登录成功。
第四步:为客户端机器导入上面生成的证书。
(1)先把上面第二步骤的第2小步生成的的证书导出。
如:keytool -export -alias tomcatkey -keystore c:\tomcat.keystore -file e:\tomcat.crt -storepass 123456
导出后会在E:盘看到导出的文件tomcat.crt
(2)把导出的tomcat.crt拷贝到客户端c:盘下。
然后在客户端机器的cmd中通过keytool把证书导入其jdk中。如:
C:\Documents and Settings\Administrator>keytool -import -keystore D:/jdk1.6/jre/lib/security/cacerts -file c:/tomcat.crt -alias 123456
第五步:为客户端机器部署APP应用并配置访问
(1)解压cas-client-3.2.1-release.zip在其models中找到cas-client-core-3.2.1.jar并考虑到客户端app应用的/web-info/lib目录中。
(2) 在/app/web-info/web.xml中添加
4 |
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> |
9 |
<filter-name>CAS Single Sign Out Filter</filter-name> |
10 |
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> |
13 |
<filter-name>CAS Single Sign Out Filter</filter-name> |
14 |
<url-pattern>/*</url-pattern> |
18 |
<filter-name>CAS Filter</filter-name> |
19 |
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> |
21 |
<param-name>casServerLoginUrl</param-name> |
25 |
<param-name>serverName</param-name> |
30 |
<filter-name>CAS Filter</filter-name> |
31 |
<url-pattern>/*</url-pattern> |
35 |
<filter-name>CAS Validation Filter</filter-name> |
37 |
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> |
39 |
<param-name>casServerUrlPrefix</param-name> |
43 |
<param-name>serverName</param-name> |
48 |
<filter-name>CAS Validation Filter</filter-name> |
49 |
<url-pattern>/*</url-pattern> |
57 |
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> |
59 |
org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> |
62 |
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> |
63 |
<url-pattern>/*</url-pattern> |
71 |
<filter-name>CAS Assertion Thread Local Filter</filter-name> |
72 |
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class> |
75 |
<filter-name>CAS Assertion Thread Local Filter</filter-name> |
76 |
<url-pattern>/*</url-pattern> |
第六步:访问客户端就能达到cas单点登录效果。
当然若要真的运行起来还要配置服务端验证方式:如通过数据库验证等。详细参考http://wenku.baidu.com/link?url=IOuJ6Jd_vw54adB9d53XJBGdIOgq5bKvjTs2odGvyb_DiATIzb52ts4bl6ugbij4EGWwXbCKsKEIGkUcO0pUzBNZlU3YS8J-tE3--nySczq