CAS单点登录

第一步:下载包

  从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中的

  <!--
2     <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
3                maxThreads="150" scheme="https" secure="true"
4                clientAuth="false" sslProtocol="TLS" />
5     -->

 修改为

      <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中添加

1 <!-- ======================== 单点登录开始 ======================== -->
2         <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
3         <listener>
4             <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
5         </listener>
6  
7         <!-- 该过滤器用于实现单点登出功能,可选配置。 -->
8         <filter>
9             <filter-name>CAS Single Sign Out Filter</filter-name>
10             <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
11         </filter>
12         <filter-mapping>
13             <filter-name>CAS Single Sign Out Filter</filter-name>
14             <url-pattern>/*</url-pattern>
15         </filter-mapping>
16  
17         <filter>
18             <filter-name>CAS Filter</filter-name>
19             <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
20             <init-param>
21                 <param-name>casServerLoginUrl</param-name>
22                 <param-value>https://demo.micmiu.com:8443/cas/login</param-value>
23             </init-param>
24             <init-param>
25                 <param-name>serverName</param-name>
26                 <param-value>http://app1.micmiu.com:18080</param-value>
27             </init-param>
28         </filter>
29         <filter-mapping>
30             <filter-name>CAS Filter</filter-name>
31             <url-pattern>/*</url-pattern>
32         </filter-mapping>
33         <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
34         <filter>
35             <filter-name>CAS Validation Filter</filter-name>
36             <filter-class>
37                 org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
38             <init-param>
39                 <param-name>casServerUrlPrefix</param-name>
40                 <param-value>https://demo.micmiu.com:8443/cas</param-value>
41             </init-param>
42             <init-param>
43                 <param-name>serverName</param-name>
44                 <param-value>http://app1.micmiu.com:18080</param-value>
45             </init-param>
46         </filter>
47         <filter-mapping>
48             <filter-name>CAS Validation Filter</filter-name>
49             <url-pattern>/*</url-pattern>
50         </filter-mapping>
51  
52         <!--
53             该过滤器负责实现HttpServletRequest请求的包裹,
54             比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
55         -->
56         <filter>
57             <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
58             <filter-class>
59                 org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
60         </filter>
61         <filter-mapping>
62             <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
63             <url-pattern>/*</url-pattern>
64         </filter-mapping>
65  
66     <!--
67         该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。
68         比如AssertionHolder.getAssertion().getPrincipal().getName()。
69         -->
70         <filter>
71             <filter-name>CAS Assertion Thread Local Filter</filter-name>
72             <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
73         </filter>
74         <filter-mapping>
75             <filter-name>CAS Assertion Thread Local Filter</filter-name>
76             <url-pattern>/*</url-pattern>
77         </filter-mapping>
78  
79         <!-- ===========


   

 第六步:访问客户端就能达到cas单点登录效果。

当然若要真的运行起来还要配置服务端验证方式:如通过数据库验证等。详细参考http://wenku.baidu.com/link?url=IOuJ6Jd_vw54adB9d53XJBGdIOgq5bKvjTs2odGvyb_DiATIzb52ts4bl6ugbij4EGWwXbCKsKEIGkUcO0pUzBNZlU3YS8J-tE3--nySczq

 

posted @ 2014-03-12 15:47  IT一族  阅读(222)  评论(0)    收藏  举报