最近公司项目要使用CAS单点登录,了解了一下,保存下来。

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

1、开源的企业级单点登录解决方案。

2、CAS Server 为需要独立部署的 Web 应用。

3、CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

 

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。下图 是 CAS 最基本的协议过程:

 

下面是CAS客户端的配置:

 

 1 <!-- CAS单点登录 -->
 2     <filter>
 3         <filter-name>CAS Authentication Filter</filter-name>
 4         <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
 5         <init-param>
 6             <!-- CAS服务端登录地址 -->
 7             <param-name>casServerLoginUrl</param-name>
 8             <param-value>http://120.209.177.135:8082/cas</param-value>
 9         </init-param>
10         <init-param>
11             <!-- 当前网站域名 -->
12             <param-name>serverName</param-name>
13             <param-value>http://localhost:8080</param-value>
14         </init-param>
15     </filter>
16     <filter-mapping>
17         <filter-name>CAS Authentication Filter</filter-name>
18         <url-pattern>/*</url-pattern>
19     </filter-mapping>
20     <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->  
21         <filter>  
22             <filter-name>CAS Validation Filter</filter-name>  
23             <filter-class>  
24                 org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>  
25             <init-param>  
26                 <param-name>casServerUrlPrefix</param-name>  
27                 <param-value>http://120.209.177.135:8082/cas</param-value>  
28             </init-param>  
29             <init-param>  
30                 <param-name>serverName</param-name>  
31                 <param-value>http://localhost:8080</param-value>  
32             </init-param>  
33         </filter>  
34         <filter-mapping>  
35             <filter-name>CAS Validation Filter</filter-name>  
36             <url-pattern>/*</url-pattern>  
37         </filter-mapping>  
38     <!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->
39     <filter>
40         <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
41         <filter-class>
42             org.jasig.cas.client.util.HttpServletRequestWrapperFilter
43         </filter-class>
44     </filter>
45     <filter-mapping>
46         <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
47         <url-pattern>/*</url-pattern>
48     </filter-mapping>
49     <!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->
50     <filter>
51         <filter-name>CAS Assertion Thread Local Filter</filter-name>
52         <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
53     </filter>
54     <filter-mapping>
55         <filter-name>CAS Assertion Thread Local Filter</filter-name>
56         <url-pattern>/*</url-pattern>
57     </filter-mapping>
58     <!-- 自动根据单点登录的结果设置本系统的用户信息 -->
59     <!--  <filter>
60         <display-name>AutoSetUserAdapterFilter</display-name>
61         <filter-name>AutoSetUserAdapterFilter</filter-name>
62         <filter-class>com.huayun.monitor.filter.AutoSetUserAdapterFilter</filter-class>
63     </filter>
64     <filter-mapping>
65         <filter-name>AutoSetUserAdapterFilter</filter-name>
66         <url-pattern>/*</url-pattern>
67     </filter-mapping> -->
68 <!-- CAS单点登录 -->

要实现CAS单点登录还需要导入相应jar包(以我使用的CAS客户端版本为例):

cas-client-core-3.2.1.jar、commons-logging-1.1.jar、xercesImpl.jar

后两个jar包不是cas的,如果项目中已有,就不需导入了。

 

 

posted on 2014-04-24 10:03  二十年梨花  阅读(718)  评论(0编辑  收藏  举报