基于CAS的企业统一认证中心实现方案研究

  • 来源:物联网技术
  • 关键字:统一认证,单点登录,安全
  • 发布时间:2019-09-27 21:37

  摘 要:經过多年的信息化建设与积累,企业内部各信息系统之间形成了相互独立的登录体系,造成了使用和安全上的诸多不便与问题。采用CAS技术建设企业统一认证中心,可以实现企业内部应用系统的单点登录,只需一次登录即可访问所有系统,避免不同系统间来回切换登录等问题,既可以提高工作效率,提升用户体验,也能够有力保证用户信息和系统安全,是企业信息化建设中的重要环节。

  关键词:统一认证;CAS;单点登录;信息化;管理;安全

  中图分类号:TP39文献标识码:A文章编号:2095-1302(2019)08-00-04

  0 引 言

  信息技术发展日新月异,许多企业信息化的过程是一个不断积累和改进的过程,多年的系统建设和数据积累形成了许多成熟的应用系统,为企业的发展作出不同的贡献,涉及企业大部分生产或业务,如OA,CRM,HR系统,财务资产管理系统,信息发布系统,生产指挥系统,劳资系统,设备管理系统以及ERP等,种类繁多,应用广泛,不可或缺。

  企业信息化过程中,各应用系统初期均为独立开发建设,彼此相互孤立,操作相互割裂,数据相互独立。各系统用户名不统一,登录时需要单独输入不同的用户名和密码。随着企业发展与业务扩展,未来企业也将不断增加应用系统,有些企业用户权限较高,涉及业务多,如果每一个系统都有自己的一套用户认证体系,登录每个系统都需要单独进行用户认证,则使用极其不便。多套系统多套用户名和口令,给用户记忆密码带来困扰,因此经常存在部分安全意识不高的用户,将多个系统设置成相同的密码甚至是空密码,或者将密码写在纸上,贴在桌上,如此种种都对业务系统造成了极大的安全隐患,极易因为密码泄露而造成非法入侵,甚至造成生产事故,同时事故责任追查难度较大。

  在安全形势日益严峻的今天,企业内控要求逐渐加强,企业内部应用系统大多采用强密码策略,要求系统用户必须在三个月内更换一次密码,因此密码失效和忘记密码的事情时有发生,给系统管理员带来了繁琐的重置用户密码工作,加大了管理员的日常管理工作负担,不利于系统维护。针对这些情况,企业建立了一个统一认证中心,可提供单点服务,对于所有企业应用系统的访问建立了一套完整的安全防护和用户管理机制,用户只需要一次登录认证成功后,就可访问任何实现单点登录授权访问的应用系统,以避免频繁登录,有效解决了记忆多套用户名密码、系统频繁登录、用户身份唯一性和合法性等问题[1]。

  1 单点登录技术

  单点登录(Single Sign On,SSO)是指在一个企业内部的多个应用系统中,用户不用多次登录各系统,只需登录一次就能够访问所有企业内的应用系统。用户无需记忆不同系统中的用户名、密码,也无需多次登录访问不同的应用系统。单点登录无论从用户还是企业的角度来看,都大有裨益。

  从企业管理角度来说,系统实现单点登录可以提高企业信息系统的安全性,提高员工工作效率,提升用户体验,减少管理成本,节约新建系统的开发成本,提高经济效益。

  从用户角度来说,单点登录可以消除多系统、多用户名、多密码的问题,减轻记忆压力,减少忘记密码带来的麻烦,还可以减少登录操作,避免多次认证的重复劳动,减少了工作压力。

  从系统管理员的角度来说,单点登录系统可以避免繁琐的账号密码管理工作,更好地执行安全密码策略,保护系统安全,减少了处理用户忘记密码和重置密码的工作。

  从应用开发商的角度来说,可以减少身份认证模块的开发工作,加快开发进度,更加注重优化业务流程,提供更好的信息服务。

  2 CAS技术

  CAS(Central Authentication Service,CAS)即中心认证服务,它是一个开源项目,由美国耶鲁大学发起,其宗旨是为基于Web的应用系统或网站提供一种可靠的单点登录方法。CAS的目的是使分布在企业内部所有异构系统的认证集中在一起实现,通过公用的认证中心来统一管理和验证用户身份,实现集中统一认证。认证的用户将获得中心认证服务颁发的证书,用户使用该证书即可在中心认证服务的各个系统上自由访问,无需单独登录认证[2-3]。

  2.1 CAS设计愿景

  (1)基于Web应用的统一认证中心实现易用性好,可跨域单点登录[4]。

  (2)减少管理多套密码系统造成的工作负担,消除安全隐患,实现统一的用户身份及密码管理。

  (3)提供更加优秀的框架设计以及弹性安全策略,降低信息系统设计时认证模块的耦合度。

  2.2 CAS特点

  (1)CAS是一个企业级单点登录的开源解决方案;

  (2)CAS服务器(CAS Server)独立部署为Web应用;

  (3)CAS客户端(CAS Client)支持多种客户端Web应用实现单点登录;

  (4)CAS支持多种语言和实现技术,包括.NET,Java,PHP,Perl,Ruby,uPortal等。

  2.3 CAS原理和协议

  CAS从结构上分为两个部分,即服务器端(CAS Server)和客户端(CAS Client)。

  服务器端(CAS Server)需要独立部署,主要功能是负责用户认证工作;客户端(CAS Client)主要负责处理受保护资源的访问请求,判断客户端访问是否需要登录,需要则重定向到CAS Server。

  CAS基本协议过程如图1所示。

  采用单点登录的客户端需要将CAS Client集中部署,CAS Client采用Filter方式保护应用中受保护的资源。

  对于访问受保护资源的每个Web请求,CAS Client 分析该HTTP请求中是否包含有 Service Ticket,若没有,就表明当前访问用户尚未通过统一认证登录,那么CAS Client就将请求重定向到CAS Server登录地址,并传递要访问的目的资源地址(Service),以便登录成功后转回该地址。用户输入用户名和密码等认证信息,如果认证通过,CAS Server随机产生一个一定长度、唯一、不可伪造的Service Ticket,并缓存以待将来验证,之后系统自动重定向到要访问的目的资源地址,并为客户端浏览器设置一个TGC (Ticket Granted Cookie,TGC),CAS Client在拿到Service和新产生的Ticket后,与CAS Server进行身份核实,从而确保Service Ticket的合法性。

  在CAS协议中,所有与CAS的交互均采用SSL协议,以确保Service Ticket和Ticket Granted Cookie的安全。整个协议的工作过程涉及两次重定向,但CAS Client和CAS Server之间进行Ticket验证的过程对于用户而言是透明的。

  另外,根据官方网站的介绍,CAS协议中还提供代理(Proxy)模式,以适应更复杂更高级的应用场景,具体应用可参考CAS官方文档,本文不加讨论。

  3 统一身份认证服务

  3.1 传统身份认证服务

  传统应用系统认证时,用户认证的流程:用户打开登录页面,输入用户名和密码,点击“提交”按钮,用户名和密码信息通过浏览器提交至服务端的身份认证模块,系统的认证模块匹配数据库中的用户名和密码信息,若信息匹配成功,则允许用户登录系统,否则禁止登录并提示登录失败或者跳转回登录页,提示用户重新登录[5-7]。传统身份认证流程如图2所示。

  传统的身份验证方式存在如下4个弊端:

  (1)仅仅简单检验用户名和密码是否匹配,无法做到对系统服务进行更小粒度的访问控制;

  (2)对于由多个子系统构成的企业应用,每个子系统单独存储用户名和密码,用户必须多次注册,频繁切换登录才可以使用不同的子系统,操作过程繁琐,用户体验差;

  (3)每一次登录系统都要传输用户名和密码,容易泄露用户隐私信息和安全信息;

  (4)统一的密码安全策略难以有效实施,导致管理负担加重和系统安全隐患。

  3.2 统一认证服务系统架构

  统一认证服务平台采用分布式结构,其分布式结构如

  图3所示。每个应用系统(生产管理系统、库存管理系统、车辆调度系统等)都有各自的数据库系统,存储用户登录账户和密码之外的用户基本信息、角色、权限和资源。统一认证中心服务器端的数据库中保存用户的登录名和密码。用户的身份认证统一交给统一认证中心服务器完成。采用独立部署模式能够把认证与访问应用系统分成两部分,通过将用户信息的读写权限有效控制在统一认证中心服务器内,实现应用系统需要获取用户登录信息时,通过协议跳转到统一认证中心服务器端获取的目的,从而确保用户登录信息的安全性。统一认证中心的信息传输采用HTTPs协议,保证传输通道安全,各应用系统和服务器端使用同一个SSL证书,以确保认证信息在传输过程中的保密性和安全性[8-9]。

  3.3 统一认证服务流程

  用户在初次访问单点登录系统中的受保护资源时,客户端的应用系统会拦截用户的访问请求,并将访问请求重新定向到统一认证中心服务器端,认证服务器获取用户的访问Cookie,在服务器端检验用户是否成功登录,如果登录成功则将请求添加一个票据传回客户端;如果登录认证未成功,则将请求重新指向服务器端的登录界面,并提示用户未成功登录,要求用户重新输入用户名和密码登录。客户端收到票据之后,再次发送请求到服务器端的票据验证地址,以验证票据的有效性。如果票据验证有效,客户端将同意用户访问受保护的系统资源;否则,将该请求重新指向到服务器端的登录界面,并提示用户重新输入用户名和密码登录。

  统一认证流程如图4所示。执行步骤如下。

  (1)用户Web浏览器向受保护Web应用服务发送初始化用户请求。

  (2)应用在URL中附加服务ID,然后将用户请求重定向到统一认证中心进行认证。如果统一认证中心检测到认证票据,则转到步骤(3);如果没有,则提示用户输入用户名和密码登录,在用户登录成功后发放认证票据并进入

  步骤(3)。

  (3)統一认证中心在URL中附带服务票据后,将用户定向回Web应用地址。

  (4)应用系统将服务票据提交至统一认证中心进行验证,获取正确的用户身份。

  3.4 统一认证中心核心模块

  企业统一认证中心由5个核心模块组成,实现统一认证、单点登录、注册用户管理等功能,统一认证中心平台架构如图5所示。

  (1)单点登录认证服务:实现统一的用户认证服务。

  (2)用户注册模块:实现用户注册以及密码找回功能。

  (3)用户信息编辑模块:提供用户自身的信息管理功能。

  (4)应用系统接口模块:为应用系统提供必需的接口。

  (5)统一用户管理系统:供认证中心的系统管理员使用。

  统一用户管理系统供管理员实现对注册用户的管理,主要提供的功能包括管理站点信息、用户统计、日志管理、账号管理和注册用户管理等。系统用例图如图6所示。

  3.5 技术实现

  企业统一认证中心的功能采用JA-SIG CAS实现。JA-SIG CAS是一项开源技术,为Web系统提供单点登录服务,具有如下两个特性:

  (1)具有开放性和文档支持协议;

  (2)拥有Java开源服务器组件,能够提供多种类型的客户端,如Java,Perl,.NET,PHP等,可与各种框架集成使用,如BlueSocket,Mule,TikiWiki,Moodle,Liferay,uPortal等。

  系统采用JavaEE技术的JA-SIG实现,基于Spring Framework技术和MVC模式开发,结构清晰,可以方便地进行扩展和二次开发。能够支持丰富的客户端和第三方软件集成,支持Java,.NET,Asp等主流开发语言。采用Hibernate框架实现数据的持久化,支持多种数据源。数据库采用MySQL,可以根据用户需求移植到其他数据库。JavaEE跨平台性能好,易于移植和部署。

  开发环境:Windows+Eclipse+Tomcat+MySQL。

  发布环境:Windows/Unix/Linux,MySQL,JDK7, Tomcat7,Apache2。

  客户端:IE,Firefox,Chrome等主流浏览器。

  4 结 语

  采用CAS技术实现的企业统一认证中心能够提供用户统一认证服务和系统单点登录功能,从而实现企业的各个应用子系统与用户身份认证服务分离,SSO服务器端统一负责处理用户身份认证,可以细粒度地对系统的每个服务进行访问控制,降低用户登录次数,保护用户隐私,提高信息安全和应用程序服务安全,为企业提供更加安全的信息

  环境。

  参 考 文 献

  [1]李俊.一个基于JA-SIG CAS改进的SSO模型及实现[D].成都:电子科技大学,2011.

  [2]李建佳,王晶.基于JA-SIG CAS统一认证平台(SSO)的设计与实现[J].广东海洋大学学报,2013,33(3):78-83.

  [3]苟素洁.浅谈信息系统统一身份认证和单点登录[C]// 中国计量协会冶金分会冶炼传感器专业委员会2012年会员代表大会及技术交流会论文集,2012:61-63.

  [4]陈洪雁,万俊伟.基于Web的企业网站性能优化方案研究与应用[J].物联网技术,2018,8(2):67-69.

  [5]侯震.面向园区的统一身份认证与开放授权系统的研究与实现[D].济南:济南大学,2015.

  [6]林伟明.基于JA-SIG CAS实现图书馆统一身份认证—以深圳大学图书馆为例[J].现代情报,2012,32(9):134-138.

  [7]程雪颖.基于校园CAS的高校图书馆数字服务系统单点登录研究与实现[J].农业图书情报学刊,2018,30(11):50-56.

  [8]周游舟.企业单点登录方案与系统集成应用[J].四川职业技术学院学报,2018,28(1):159-163.

  [9]佚名.CAS实现单点登录详解[EB/OL].http://wenku.baidu.c.

  [10]俞靓亮.基于CAS协议的单点登录系统在数字化校园中的应用[J].电脑与信息技术,2018,26(6):21-23.

  [11]方源,鲍克,赵一凡,等.基于流量的工业控制系统入侵检测技术[J].物联网技术,2018,8(10):64-65.

  [12]佚名.基于.NET的单点登录(SSO)解决方案[EB/OL].http://wenku.baidu.c.

  [13]佚名.統一身份认证平台集成接口文档[EB/OL].http://wenku.baidu.c.

  [14]佚名.Tomcat上CAS认证服务的SSO例子_AikeyLin-[EB/OL].http://blog.sina.com.

  祝庆绩

……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: