APP下载

基于CAS和Liferay门户的统一身份认证系统

2018-12-20陈国慧谭海波李晓风

计算机技术与发展 2018年12期
关键词:门户单点浏览器

陈国慧,谭海波,吕 波,李晓风

(1.中国科学院 合肥物质科学研究院,安徽 合肥 230031;2.中国科学技术大学,安徽 合肥 230026)

0 引 言

随着计算机技术、网络技术的飞速发展,用户可使用的信息化应用,诸如办公应用、邮件服务、财务管理、设备管理等系统的数量日益增多。然而这些系统大多都是独立设计开发,相互之间缺乏信息共享、业务互动以及文件共享等方面的设计,在时代的背景下,逐渐成为信息孤岛[1]。由于各应用系统的分散管理,导致它们的使用和维护产生诸多问题:开发人员需要维护多个异构的应用系统,所使用的架构、技术可能不同,使维护工作变得困难;管理人员需要维护各应用系统中的用户、组织和角色等信息,多个系统很容易产生信息冗余和冲突;用户使用各自孤立的应用系统需要使用不同账号和密码,系统数量越多,越是增加用户账号管理成本和系统使用成本。而当前各行业、各领域工作协同已成趋势化,这些问题亟待解决,因此构建统一的身份认证系统,提供集中的信息管理和应用集成已成当务之急[2]。

为解决上述问题,设计并实现了一种基于CAS[3]单点登录[4]和Liferay[5]门户[6]的统一身份认证系统[7],提供统一身份认证库、统一的用户界面和应用资源集成平台。

1 技术基础

1.1 数据库系统

通过需求分析,系统不仅要提供对用户、组织和权限的管理,并且由于院、所、中心、实验室等研究机构之间经常性的跨组织、跨学科交流,需要实现和提供一个灵活方便的人员、课题组、权限以及内容的管理和使用平台。

经过调查研究和比对的结果,该系统选择关系数据库MySQL管理系统数据。统一身份认证系统通常采用LDAP作为用户身份信息存储方式,主要利用其查询数据速度快和树状层次结构存储的优点[7]。但是在LDAP中增加、删除和修改数据存在速度过慢的问题,不能满足系统对数据修改效率的要求。而且LDAP并不支持事务机制,在该系统架构下,可能会出现数据不一致的问题。MySQL数据库对数据增加、删除和修改则没有速度过慢的问题,且其支持事务机制可以解决数据不一致的问题,满足系统对数据管理的性能和安全方面的需求[8]。

1.2 单点登录

该系统使用中央认证服务(central authentication service,CAS)作为单点登录实现的技术。单点登录(single sign-on,SSO)是服务于企业业务整合的解决方案,在多应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统[9]。单点登录的实现技术有多种,由于商用产品成本过高,基于项目成本和功能需求,主要考虑开源产品,目前主流技术有Kerberos[10]和CAS等[11]。Kerberos技术的安全性较高,但每一个子应用都需要实现Kerberos体系,其实现比较复杂,部署和使用成本过高。CAS系统由于其简单有效、安全可靠、文档齐全的特性,使其部署简单,并且有良好的社区支持,在实际中应用广泛[3]。经过比对,该系统选择CAS技术作为单点登录模块。

1.3 门 户

门户也被称为信息门户,是一个提供统一用户界面和集成应用资源的系统,提供统一信息管理和集中的应用入口,通常以网页的形式展现[6]。门户最主要的两大功能是应用的集成和内容的展现,提供访问不同来源内容的能力和统一的信息管理平台,通常还包括单点登录、权限控制、内容管理、信息发布、文件管理等功能[12]。

该系统使用Liferay搭建门户系统。Liferay是开源的门户项目,利用Spring、Hibernate、Struts等框架[13],实现了JSR168规范[14]中提出的门户标准。Liferay支持对用户、组织、角色、站点、权限等的管理,还支持公告、文章、文档、图片等内容的发布、展示和管理,允许用户个性化定制个人空间等功能,是一个通用的、统一的工作平台。同时,以Liferay作为开发平台,由于其良好的可扩展性和定制性,可极大提高开发人员的开发效率和管理质量。

2 系统架构

该系统主要由数据库系统、CAS单点登录系统和Liferay门户三个部分构成,系统架构如图1所示。

图1 统一身份认证系统架构

数据库系统存储统一身份认证基础库,主要包括用户、组织、角色信息等数据,是整个系统的基础数据源,为统一身份认证提供数据支持。CAS单点登录系统,提供单点登录服务,主要由CAS Server和CAS Client两个部分组成。CAS Server作为认证中心,负责对用户的认证工作,对用户名和密码凭证进行验证处理;CAS Client被集成于应用系统中,负责将对用户身份认证的工作重定向到CAS Server进行处理。Liferay门户提供统一的用户界面和内容展示,包括对用户、组织、角色以及站点等信息的管理,其本身集成了CAS Client包服务,也可作为普通应用系统使用统一身份认证功能。

3 系统实现

3.1 数据库设计

该系统使用MySQL数据库作为数据库管理系统。根据需求,系统主要数据表包括用户、组织、角色、用户组和资源动作表等,关系如图2所示。

图2 主要数据表关系

用户表user_是系统的关键实体,统一身份认证的信息来源;组织表organization_是组织架构表,存储人员的组织架构关系;用户组usergroup存储用户组信息,可用于灵活管理流动人员和对人员进行分组;角色表role_存储的是角色的定义,系统基于角色提供权限,角色被赋予用户或用户组,使其具有特定的权限,角色主要分为管理员、用户、临时用户等;资源动作表resourceaction存储角色的权限,及对用户访问门户中资源的增加、删除、修改和查询的能力。

3.2 单点登录的实现

3.2.1 CAS单点登录流程

实现单点登录功能需要解决三个关键问题:登录信息传递问题、登录状态判断问题和登出信息的传递问题。

CAS通过Ticket(票据)和对Ticket的交互处理,解决用户登录状态问题。主要票据有全局票据(ticket granting ticket,TGT)和服务票据(service ticket,ST)等。TGT是认证中心CAS Server为用户签发的登录票据,用户拥有了TGT,就可以证明自己已经在认证中心登录成功,即完成全局登录;全局会话(ticket granting cookie,TGC)是TGT对象的ID,被作为浏览器与CAS Server之间的会话(Cookie)[15]返回给用户,用作浏览器和CAS Server间通讯的访问凭证,且其只能通过安全通道传输(HTTPS)[16];ST是CAS为用户签发的访问某一特定应用的票据。

用户首次访问某应用时,如系统A,从发出访问请求到获得资源流程如图3所示。

具体流程说明如下:

(1)用户使用浏览器请求访问系统A中受限资源,系统A检查发现用户没有经过认证,需要对用户身份进行认证;

(2)系统A将请求重定向到认证中心;

(3)浏览器向认证中心发送登录请求;

(4)认证中心返回登录页面;

(5)用户输入用户名和密码后提交至认证中心;

(6)认证中心从统一认证库中获取用户信息;

(7)统一认证库返回用户信息给认证中心,认证中心验证成功后,创建TGT,并签发ST;

(8)认证中心将TGT的ID,即TGC作为Cookie,返回给用户浏览器,并重定向至系统A,重定向链接中将ST设置为参数返回给系统A;

(9)浏览器被重定向至系统A,此时请求携带参数ST;

(10)系统A判断请求存在ST票据,直接向认证中心发出验证ST请求;

(11)认证中心检查该ST是否存在,若存在,则证明用户身份已经获得认证,返回验证结果;

(12)系统A收到验证结果,创建局部会话的Cookie,返回给用户;

(13)用户再次请求访问系统A的受限资源,携带Cookie,系统A检查到会话已经存在该Cookie,验证通过;

(14)将请求的资源返回给用户。

经过上述一系列流程后,系统完成对用户的初次认证,并最终将用户请求的资源返回给用户。整个过程完成了浏览器、应用系统和认证中心三者之间的两两互连,从而解决登录信息的传递问题。三者之间的关系为:浏览器与认证中心通过TGC维持全局会话;应用系统通过ST与认证中心保持联系,验证用户的身份;浏览器与应用系统则通过普通Cookie维持局部会话。

用户首次访问未登录的系统B时,与访问系统A时的区别在于第3步登录请求时,该请求直接携带TGC信息,认证中心会直接签发新的ST,而不必再经过过程4~7,直接省去了用户输入用户名和密码登录的过程。

用户登出应用系统时,除销毁该应用的局部会话外,还通知认证中心结束全局会话,认证中心再通知其他应用系统销毁各自局部会话,实现其他应用系统的自动登出。

3.2.2 CAS Server的部署和配置

(1)部署环境配置。

该系统选择将CAS Server部署到Tomcat[17]服务器。为增强系统安全性和启用CAS Server的单点登录功能,需要对CAS Server的安全证书进行管理。该过程使用Java自带的证书管理工具keytool生成证书并导入到CAS Server的执行环境中,在Tomcat配置文件server.xml中添加对HTTPS连接支持的配置,关键配置如下:

protocol="org.apache.coyote.http11.Http11NioProtocol"

port="8443"SSLEnabled="true"

scheme="https" secure="true"

lientAuth="false" sslProtocol="TLS"

keystoreFile=" pathname"

keystorePass="pass"

maxThreads="150" >

(2)CAS Server依赖包配置。

CAS Server使用Maven[18]进行项目管理。项目默认没有提供MySQL数据库的连接和认证的依赖包,部署时需要添加相关依赖包的配置,配置位于CAS Server项目的pom.xml文件中。

(3)CAS Server数据库、密码规则配置。

CAS支持对数据库的连接和使用数据库作为认证数据源,有多种密码验证规则可供选择。对CAS Server的数据库连接、获取认证数据和密码验证规则设置在配置文件application.properties中,添加的配置如图4所示。

图4 CAS中数据库和密码验证规则配置

3.2.3 CAS Client的使用

CAS Client以包或库的形式被集成到待认证的应用系统,保护应用系统中访问受限的资源。应用系统不必在应用内对用户身份进行认证,而是将认证工作重定向到CAS Server进行处理。CAS Client能够支持多种编程语言开发的应用系统,包括Java,.Net,PHP,Perl等。

CAS Client与Web应用整合时只需关注两个方面,分别是请求路径是否需要跳转到登录页面和重定向用户到请求的资源。认证工作可通过设置过滤器(Filter)[19]配置完成,将配置中的过滤器和监听器配置成的站点和重定向目标配置成CAS Server对应的接口。

3.3 门户的配置与使用

(1)Liferay的部署配置。

为避免数据的冗余,该系统中Liferay与CAS使用同一份用户信息。Liferay使用数据库数据需要与MySQL进行对接,并使密码验证规则相互匹配。需要在Liferay的启动配置文件portal-setup-wizard.properties中添加相关配置,如图5所示。

(2)Liferay对接CAS设置。

为使Liferay启用CAS单点登录功能,需要在其系统设置中与CAS进行对接。需要在认证的设置中配置CAS单点登录的登录URL、退出URL、服务器名和服务器URL等。

该系统提供普通用户自定义门户桌面内容的功能,用户可进行个性化设置,发布公告、文章、文档、图片等。管理员可对用户、组织和角色等信息进行管理。

图5 数据库和密码验证规则配置

4 结束语

基于CAS单点登录和Liferay门户,以关系数据库为数据存储基础设计与实现了统一身份认证系统,达到整合用户身份信息、集中应用系统入口和统一系统信息管理的目的。该系统为用户间进行信息共享和交流提供了一个良好的平台,并进一步提高了各系统间协同工作的能力,同时降低了用户信息管理的难度和成本。在未来的工作中,将继续深化对统一身份认证系统的开发、建设和推广工作。不仅要将现有的应用系统纳入到统一身份认证平台中进行管理,而且要对新的应用系统进行推广并对开发人员提供帮助,使统一身份认证系统得到更广泛的支持和认可,削弱乃至消除信息孤岛的存在。

猜你喜欢

门户单点浏览器
关隘:要道门户
单点渐进无模成型的回弹特性
西域门户——两关遗址
BDS-2三频伪距单点定位精度分析
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
基于内外网门户系统的研究
单点的梦想
数字电视地面传输用单频网与单点发射的效果比较
中小型高校图书馆门户的设计与实现——以吉林师范大学图书馆门户为例