基于CAS的单点登录平台的研究与实现

时间:2022-08-04 06:36:20

基于CAS的单点登录平台的研究与实现

摘要:针对企业中多个应用系统造成的数据不能共享、多次身份认证和用户信息独立管理的问题,采用基于cas的统一身份认证、LDAP目录服务和基于Liferay Portal的系统集成,设计了企业单点登录平台,实现了统一的身份认证、统一的用户管理和资源授权以及不同应用系统的集成。

关键词:单点登录;CAS统一身份认证;LDAP目录服务

中图分类号:TP399 文献标识码:A 文章编号:1009-3044(2014)03-0534-03

在较大的企业内部,一般有很多应用系统为企业提供业务管理、人事管理、财务管理和其他信息服务。这些系统建设于不同的时期,由不同的厂商开发,采用不同的技术标准,运行在不同的平台上,用不同的软件设计语言开发,导致各系统形成了信息孤岛,独立管理用户账号、用户信息,独立进行身份认证和资源授权,用户访问不同的应用系统时,每次都需要输入账号口令进行身份认证,系统应用非常不便。

1 单点登录关键技术

1.1 单点登录SSO

单点登录(Single Sign On)是一种访问认证机制[1],能够实现在多个应用系统中,用户只需要登录认证一次就直接访问已授权的系统,而不需要在访问每个系统时都进行身份认证。单点登录提供了统一的身份认证机制,有效解决了多次身份认证带来的不便与安全问题;通过提供统一的用户管理,集中维护管理用户信息、用户账号和资源授权。

1.2 LDAP目录服务

LDAP(Lightweight Directory Access Protocol)即轻量目录访问协议[2],它采用目录树的分层结构存储信息,具有目录信息的检索与管理功能,主要用于从服务器上检索信息,实现对信息的有效管理和访问。

目录服务(Directory service)通过将分布在计算机网络中的用户、资源和其他对象统一组织起来存储为具有描述性属性的对象,进行统一的管理和控制。利用目录服务可以通过名称快速查找和定位资源,而不必关心资源的具置[3],从而实现对资源的透明访问。

LDAP是一个运行于应用层的协议,其目录服务建立在C/S模式之上[4],所有的目录信息数据都存储在LDAP服务器中,每个LDAP服务器由目录服务模块、管理模块和复制服务模块三个部分组成[5]。

目录服务模块由前端和后端两个部分组成,前端主要完成客户端与服务器之间的网络通信,以及协议解析和分析[5];后端主要负责目录数据库的管理。

管理模块主要承担目录信息的管理与维护工作,确保用户获取准确的目录信息。

复制服务模块负责LDAP服务器之间目录数据的复制,确保目录服务的一致性。

1.3 CAS

CAS(Central Authentication Service)是由耶鲁大学设计开发的一个开源项目,旨在为Web应用系统提供一种可靠的单点登录方案。

CAS通过独立的认证中心实现集中式的认证。从体系结构看,CAS由三个部分组成:CAS服务器(CAS Server),CAS客户端(CAS Client)和用户浏览器(Web Browser)。

1) CAS服务器需要独立部署,主要负责用户身份的统一认证和应用系统电子票据的校验[6];

2) CAS客户端部署在应用系统中,主要负责处理对客户端受保护资源的访问请求。客户端将请求重定向到CAS服务器进行认证,认证通过后,才可向用户提供服务;

3) 用户浏览器是用户访问CAS客户端的工具,需要支持HTTP、HTTPS重定向,能够存储安全Cookie。

在CAS单点登录系统中,认证过程主要涉及三种票据[7]。

1) ST(Service Ticket):指用户访问某一个应用系统的服务票据,是由CAS服务器在用户通过CAS认证后生成的一个随机参数,用于校验客户端发送的ST,每次完成校验后,ST将被自动销毁,以确保其安全性;

2) TGT(Ticket Granting Ticket):票据授权票据,由CAS服务器生成,表明用户已通过CAS身份认证;

3) TGC(Ticket Granting Cookie):票据授权Cookie,用于存放TGT。由CAS服务器在用户通过CAS认证后生成,并保存在用户浏览器的Cookie中。用户单点登录后访问其他应用系统时请求被重定向到CAS服务器,服务器主动获取用户的TGC,据此判断用户身份的合法性,用户浏览器关闭TGC即失效。

1.4 Liferay

Liferay Portal是由Liferay公司开发的构建企业级门户网站的开源软件产品[8],基于J2EE架构,采用了Java、Web、EJB、JMS等技术,提供多种单点登陆接口,如 CAS、LDAP、OpenID、OpenSSO等,支持多种主流数据库,提供对多个系统的内容集成,能够实现企业应用系统资源、数据信息资源的统一集成,是一个完整的门户系统解决方案。

2 单点登录系统的设计与实现

2.1 单点登录系统的系统结构

本系统通过结合CAS与基于LDAP的目录服务,实现了统一的用户管理、身份认证和授权管理,并利用Liferay Portal实现应用系统的集成,系统结构如图1所示。

其中,Liferay Portal作为整个平台的单点登录门户,通过集成企业内现有的应用系统,为用户提供了一个统一的系统登录入口;CAS服务器主要负责对用户的身份进行认证,认证机制采用LDAP;CAS客户端主要负责将用户的访问请求重定向到服务器,并向通过身份认证的用户提供服务;LDAP目录服务器作为单点登录的认证数据库,主要负责集中存储用户的身份认证信息、分组信息、角色信息、授权信息,以及用户账号与角色的映射关系等。

2.2 单点登录系统的主要功能模块

2.2.1 统一用户管理模块的设计

统一用户管理指不同的系统使用同一套用户处理机制。本系统的设计采用基于LDAP的目录服务构建统一用户管理,集中管理和维护用户的身份认证信息,实现从一个集中点控制用户账号的注册、注销与用户信息的变更以及不同系统对用户的操作,CAS基于统一用户管理进行统一身份认证。

2.2.2 基于角色的统一授权模块的设计

本系统基于两种用户管理机制设计了基于角色的统一授权。

基于分组的用户管理。这种机制将用户根据企业内部的机构划分进行分组,然后根据用户所属部门,将其加入对应的分组;

基于角色的用户管理。这种机制根据企业内部的职能职权划分创建各种角色,对各类角色进行定义,对不同的角色进行不同的授权,配备不同的资源,设定不同的访问权限。

通过为用户绑定一个或多个角色,实现对用户的授权、资源分配以及访问权限的控制。完整的用户授权流程为:

1) 新用户在统一用户管理注册账号,添加个人信息,进行分组;

2) 根据系统的角色定义为用户选择角色,根据角色为用户分配不同应用系统的访问权限与操作权限,建立用户账号与角色的映射关系,统一存储在LDAP目录服务中;

3) 如果用户账号被注销,对应的授权信息也将被删除。如果用户的职位或岗位发生变动,只需改变用户的角色就可以重新进行授权。

2.2.3 统一身份认证模块的设计

统一身份认证将企业内不同异构系统的用户身份认证工作进行统一管理,解决各系统独立认证产生的各种问题。本系统采用CAS和LDAP相结合的方式构建统一身份认证。CAS获取用户账号与密码,LDAP将其与LDAP目录服务中已存储的口令信息的进行比较,验证被认证对象的合法性。考虑到安全性,系统使用Liferay 提供的加密算法对用户的账号与口令进行加密传输,同时,对LDAP目录服务中存储的口令文件进行了不可逆加密[3]。用户首次进行单点登录和身份认证的流程如下:

1) 用户登录Portal单点登录门户,CAS客户端将访问请求重定向到CAS服务器;

2) 服务器验证客户端的请求,由于是首次登录,服务器将页面跳转到其登录页面;

3) CAS服务器获取用户账号和密码,访问LDAP目录服务,对用户的身份进行认证;

4) 认证通过后,服务器生成ST、TGT和TGC,将TGC写入用户浏览器的Cookie,然后将请求重定向回客户端,同时传递ST;

5) CAS客户端检测到ST,将请求重定向到服务器,请服务器对ST进行校验;

6) 校验通过后,CAS服务器销毁ST,从LDAP目录服务中获取用户账号对应的应用系统,传递给客户端;

7) CAS认证通过后,客户端获得服务器的授权,可以向用户提供服务,同时显示用户有权访问的应用系统;

8) 用户点击访问应用系统,系统的CAS客户端检查自己的Cookie中是否存在ST;

9) 由于是首次登录,CAS客户端中不存在ST,客户端将请求重定向到CAS服务器;

10)服务器接收到请求后,获取用户的TGC,校验其合法性;

11)由于用户进行单点登录时已进行身份认证,TGC校验通过,CAS服务器生成ST,将携带ST的请求重定向回客户端;

12)CAS客户端检测到ST,发送给服务器进行验证;

13)验证通过后,服务器销毁ST,从LDAP目录服务中获取用户账号对应用系统的授权信息,传递给CAS客户端,并对客户端进行授权,允许其为用户提供服务;

14)用户成功登录应用系统,无需再次输入账号口令进行身份认证。

2.3 系统的实现

1)CAS Server端的配置

① 将spring-ldap-1.3.1.RELEASE-all.jar和cas-server-support-ldap.jar文件添加至cas/WEB-INF/lib目录下;

② 添加LDAP依赖

org.jasig.cas cas-server-support-ldap ${cas.version}

2)LDAP认证配置

修改web的配置文件 WEB-INF\deployerConfigContext.xml,在根节点下添加bean:ContextSource 的配置。

3 结束语

为了方便用户进行系统应用,以实现多个应用系统的单点登录和统一身份认证为出发点,设计了企业单点登录平台,实现了企业内多个应用系统的集成、统一用户管理、统一身份认证和统一授权管理功能。

参考文献:

[1] 皮晓东.单点登录的研究实现[J].计算机应用与软件,2007,24(6):156.

[2] 任军.基于LDAP的目录服务综述[J].计算机应用研究,2005(5):9.

[3] 王电钢.基于LDAP目录服务的单点登录系统的研究与实现[D].成都:四川大学计算机学院,2004.

[4] 沈婧,耿国华,周明全,梁娜.LDAP目录服务在网络科技资源应用基础环境中的应用[J].计算机应用与软件,2009,26(1):57.

[5] 于剑,张辉,赵红梅.LDAP目录服务在Web开发中的应用[J].计算机应用,2003,23(10):82-84.

[6] 黄经赢.基于CAS协议的单点登录系统在数字化校园中的应用与设计[D]广州:华南理工大学计算机科学与工程学院,2012.

[7] 季昉.基于CAS 的Web 单点登录系统的应用研究[D].大连:大连海事大学,2010.

[8] 杨志桐.基于Liferay Portal的乡镇企业门户网站建设研究[D].吉林:吉林大学计算机科学与技术学院,2012:17.

上一篇:UML模型测试的研究综述 下一篇:面向对象的可扩展计算机网络设计软件系统探讨