CAS实现单点登录原理与实例解析

来源:互联网 发布:网络是利与弊 编辑:程序博客网 时间:2024/04/30 23:09

    上几篇博客介绍了使用cookie实现同域和跨域系统的单点登录,本文将介绍通过CAS实现单点登录实例。

CAS耶鲁大学研发的单点登录服务器主要分为服务端和客户端两个系统模块;本文将通过官网提供的实例进行介绍。

一、CAS实现SSO的原理与认证流程

使用CAS实现SSO的原理实际跟生成cookie进行认证一样,不过CAS将这个认证cookie称之为Ticket。

认证流程如下:

1、浏览器发出用户请求到客户端程序(例如上文中的www.a.com,www.b.com属于两个客户端程序)。 

2、客户端验证客户端会在本地验证是否有该请求对应的Ticket信息,如果没有,表示该用户尚未登陆,重定向到CAS服务器,服务器负责生成一个用户Ticket,返回给客户端。

3、 客户端再将浏览器发来的用户请求与服务器返回的Ticket验证,有效则返回客户端指定页面。客户端将该Ticket保存,以备下一个用户请求进行验证。

CAS客户端的Ticket实际就是CAS服务端返回的凭证cookie。

 二、CAS实现单点登录

1、建立三个域名指向本地IP

    两个客户端:127.0.0.1 www.a.com 、127.0.0.1 www.b.com

     一个服务端:127.0.0.1 www.server.com

2、下载CAS相关jar包

   CAS-server3.xx.zip   CAS-client.zip

3、CAS服务端配置

    解压CAS-server.zip,并从中找到服务器端war文件,发布到应用服务器tomcat中,并配置tomcat server.xml文件添加<Host name=“www.server.com” appBase=server>;启动tomcat,输入 http://www.server.com ,CAS界面正常显示。

4、CAS客户端配置

    1)直接下载官网提供的实例,将webapp解压到tomcat/bbs/ROOT目录下和tomcat/news/ROOT目录作为两个客户端程序。

         【CAS客户端依赖于CAS-client-core和commons-logging两个jar,位于在client压缩包的module文件夹中】

    2)修改客户端web.xml中filter的地址,启动tomcat后,客户端即可正常运行。

三、CAS源码思路

通过配置我们不难发现,CAS的实现思路与上一篇博文实现SSO的思路基本一致:

  1. 服务端代码负责生成Ticket并用一个map结构维护这些Ticket。也就是SSO体系结构中的“认证中心”。同时也负责与数据库的交互。

  2. 客户端编写验证代码,主要负责认证和核对Ticket,也就是web.xml中两个核心拦截器用于拦截客户端请求。分别用于重定向和接收服务器发送的Ticket。

  3. CAS的服务器端程序由spring+Spring web flow写成。全部使用spring配置文件。

四、CAS同类产品

单点登录的具体实现有很多种选择,包括:

1、采用专门的SSO商业软件: 主要有:Netgrity的Siteminder,已经被CA收购。Novell 公司的iChain。RSA公司的ClearTrust等。

2、采用门户产品供应商自己的SSO产品,如:BEA的WLES,IBM 的Tivoli Access Manager,Sun 公司的identity Server,Oracle公司的OID等。

3、这些商业软件一般适用于客户对SSO的需求很高,并且企业内部采用COTS软件如:Domino,SAP,Sieble的系统比较多的情况下采用。并结合身份管理。统一认证等项目采用。采用这些软件一般都要对要集成的系统做些改造,如在要集成的系统上安装AGENT。现在一般只提供常见软件如:Domino,SAP,Sieble,常见应用服务器:weblogic,websphere等的AGENT。要先统一这些系统的认证。一般采用LDAP或数据库。然后才能实现SSO。比较麻烦。

4、开源类产品主要有:

JOSSO:http://www.josso.org/

OPENSSO: https://opensso.dev.java.net/

 

 

1 0