企业单点登录方案与系统集成应用
企业单点登录方案与系统集成应用
文/周游舟
“摘 要” 信息化建设是现代企业管理中的重要手段,优秀的信息化建设离不开多系统、多阶段的建设。在这建设过程中,企业必然会碰到多系统、多入口、多帐号、多密码的问题,为了解决这些问题,企业可能会引入企业门户为入口的统一登录方式,由企业门户统一集成各系统。不管是引入系统还是单独开发集成系统,都离不开单点登录方案的选择与实施。因企业应用中的单点登录重点关注登录功能,对单点退出功能相对不是很重视;本文主要对企业信息化集成中的单点登录中的登录方案进行研究,首先对企业内部常用信息化系统进行简介,其次介绍UCenter单点登录原理,再次介绍企业常用单点登录集成原理,最后总结归纳问题分析。通过对门户单点登录方案分析对提高企业系统集成水平具有重要的意义。
“关键词” 单点登录 系统集成 UCenter 企业门户
The Research of Enterprise's Single Sign-on scheme and Application of System Integration
Abstract :Enterprise's informatization construction is an important method for modern enterprise management.A excellent informatization construction to be builded by multi-system and multi-stage.Some issues is unavoidable in the process of enterprise's informatization construction such as multi-system,multi-entrance,multiple-account and multi-password.In order to solve these problems,A enterprise portal system might be introduced which provide a single sign-on(SSO) scheme to login in multi-system.Whether the introduction of a portal system or the development of integrated systems alone, the key point is the selection and implementation of SSO scheme.Usually,mostly attention be focused on the login function of SSO scheme and exit function be disregard.This paper mainly research the login scheme in SSO.Firtly,the paper introduce the enterprise's common information system.Secondly,introducing the single sign-on principle of UCenter.Thirdly,introducing the principle of other common single sign-on schemes.Finally,summarizing and alalysising the common problems.It is of great significance to improve the level of enterprise's informatization construction by analyzing the portal single sign-on scheme.
Keywords:SSO,System Integration,UCenter,Enterprise portal
随着科学技术的发展,信息化、网络化时代的到来,以网站作为对外的展示窗口,进行内外信息交流,已成为必然的趋势。目前在中大型企事业单位信息化应用中,多套系统的存在已是很普遍的现象,有自主开发的,有合作开发的,有向软件供应商采购的,这些软件涵盖面较广,从常规的人力资源管理、财务信息管理、邮件系统到具体生产管理系统等;同一个用户可能在不同的系统中都有相应的帐号、密码,这就经常给用户造成登录系统的困扰。
单点登录(Single Sign On)是目前最适合、最普遍的业务系统整合的解决方案之一,旨在解决多应用系统集成、交互的问题,在多个应用系统中,通过用户的一次登录认证,即可获得其他所需访问的应用系统的授权。在此集成条件下,不仅可以减少用户经常忘记应用系统地址、用户名及密码的困扰,而且也可以大大减少运维人员的工作量。本文主要探讨中大型企业中单点登录系统集成的方案及技术原理。
1 企业信息化系统
企业信息化主要是指利用现在的信息技术手段,通过电脑、手机等移动设备对企业日常信息进行分享、存储和处理,具体信息化系统可分为常用管理软件和生产制造的专业软件。常见的管理软件有FMS(财务管理系统)、OA(办公自动化)、Mail(邮件系统)、BPM(业务流程系统)、ERP(企业资源计划)、CRM(客户关系管理)、HR(人力资源)、BBS(论坛)、Portal(门户/官网)等,而生产制造行业的专业软件比较多,且应用相对比较窄,在此就不列出。
在以上这些系统中,各企业因不同行业、不同规模、不同发展阶段等因素不同,最终选择的软件系统也参差不齐,但核心功能和思想是相通的。各软件系统可能存在部分包含或全包含关系,如FMS一般都已经包含在ERP系统的财务模块。OA系统更是包罗万象,其中可能包含HR、Mail、BBS、BPM等软件的部分功能。对应单点登录系统集成方案来说,首先需要在这些系统中找到用户信息的元数据,很多企事业单元是以人力资源相关系统的数据作为集成的元数据;其次就是元数据的对接与共享;最后就是以元数据为基础的系统间集成。
2 UCenter单点登录原理
UCenter是一款开放软件,主要面向中小站长。通过UCenter站长可以无缝整合Comsenz系列产品,实现用户的一站式注册、登录、退出以及社区其他数据的交互的php框架;当然也可以很方便的按照API说明集成其他软件系统。
使用UCenter进行同步操作,主要依托于UCenter server 和UCenter client之间的API接口进行通讯。要使得通讯成为可能,首先要通过UCenter管理页面注册所有需同步的应用,并验证成功后才能进行通讯。下面以客户端A、B、C连接UCenter进行登录同步为例,简要说明UCenter通讯原理。
UCenter登录同步原理图
如上图所示,当用户发起登录A系统验证之后,UCenter客户端与服务端需做如下交互过程:
(1)客户端A向UCenter服务端发起用户同步登录其他系统请求,具体过程是调用uc_api_post()发送到UCenter服务端下control/user.php下的onsynlogin()接口。
(2)UCenter服务端返回包含同步系统信息的<script src=""></script>字符串,返回字符串格式如下:
<script type="text/javascript" src="http://xxxx.xxxx.xxxx.xxxx/api/uc.php?time=12345628&code=0df9Y3rHKiyezhouyzruuYaDrfzht2URojjaffo21zhouyzYpdy%2FXzo1WwTEZhouYouZEOU%2F%2BoA" reload="1" ></script>
其中,xxxx.xxxx.xxxx.xxxx对应客户端B或C的地址,code里面包含了用户相关信息,每一个系统对应一个这样的javascript字符串。
(3)客户端A输出UCenter服务端返回的javascript字符串,同时也就通知了客户端B和C执行同步登录操作。
(4)客户端B和C收到同步登录请求后,解析和验证time和code参数,并把用户参数发送到UCenter服务端获取用户信息,并完成相应登录操作。
通过以上交互过程分析发现,UCenter单点同步登录操作主要是服务端返回同步登录系统信息脚本后,由客户端浏览器通过javascript脚本以URL形式调用对应系统的接口完成同步登录。在企业实际应用中,针对一些每个用户都能登录使用的系统可以比较方便的集成UCenter,如BBS、问答系统等。
3 企业常用单点登录集成原理
随着企业信息化的发展,业务系统的数量在不断的增加,老的系统却很难升级,也不能轻易的替换,在进行单点登录集成的时候需要考虑如下问题:第一、由于各应用系统往往都已经处于稳定运行状态,单点登录系统的实现应该对各应用系统的登录认证体系冲击最小,各应用系统原有的登录流程依然可用。第二、由于企业中可能很多系统是购买或许外包开发,应用系统虽然提供对单点登录的支持,但要求应用系统用户认证的设计符合其特定规范,这对采用某一统一登录认证集成方式很难实现。第三、由于每个应用系统都有自己的用户库,同一用户可能在不同的应用系统中使用不同的认证账号。针对这些问题,基本上无法完全使用类似UCenter的统一集成方式,只能针对系统特性采取不同的集成方法。下面介绍常规单点登录要素和几种常见的单点登录集成原理:
3.1常规单点登录要素介绍
常规单点登录原理
如上图所示,常规单点登录主要参与要素有:单点登录发起系统(应用系统A)、用户验证、令牌生成与解析、单点登录接收系统(应用系统B)四个要素。单点登录发起系统是指用户登录系统的入口系统,在很多企业里面是由企业门户承担单点登录发起系统角色。用户验证是判断一个用户是否为合法用户的处理过程,验证方式多种多样,比如账号密码验证、二维码扫描验证、USB硬件验证、域验证等。令牌生成与解析是指系统之间信息参数传递处理方式,考虑到安全性,系统之间不直接传递信息本身,而这些信息由一串无规则的秘钥串代替,当接收方收到秘钥串再调用秘钥解析接口获得相关信息,秘钥串一般需考虑唯一性、时效性和调用方的确定性。单点登录接收系统是指用户登录由其他系统调用单点登录接口完成登录过程的系统。在企业实际应用中,根据实际系统情况可能需要采取不同要素的组合。例如,用户验证和令牌生成与解析是统一身份认证系统的部分功能,或单点登录发起系统、用户验证、令牌生成与解析三者功能是由企业门户系统提供都是可行的。在这些要素组合过程中,如果被分在不同系统,那么需要特别关注的问题是要素之间调用的安全性问题。怎么解决调用安全性问题呢?常规方式有:第一、内外网或网段隔离,如系统之间的调用走内网IP,只有最终客户端跳转才走外网地址。第二、系统注册,调用的时候带上参数验证,如IP、MAC验证,系统账号、密码验证等。第三、调用地址添加时间戳和加密签名验证。
3.2微软系域账号登录集成
在企业应用系统中,难免会碰到集成微软系域账号系统,例如,Exchange系统、Sharepoint系统等。然而,微软系系统集成基本上要求是域账号集成或按照应用系统提供的方式集成,但企业中自主开发的集成方式往往不支持微软系集成要求。下面以Exchange集成举例说明,查询微软官方资料获得单点登录集成途径有:第一,把需集成的应用系统和Exchange一起部署在微软的ISA防火墙内,通过获取ISA防火墙的token,并传递给Exchange完成单点登录功能。第二、用户使用域账号登录微软操作系统,用户浏览器和Exchange简单配置完成单点登录集成。第三、使用用户账号和密码调用Exchange接口完成单点登录集成。第一和第二种方式,集成方式编程工作量较小,可以说基本上不用编程,全部按照说明文档配置;但是对系统环境要求比较特殊,离不开微软域环境,很难在非Windows操作系统下使用。第三种方式,编程工作量相对比较大,而且要涉及到用户账号和密码同步问题,但是可控性高、对操作系统基本没有特殊要求;在实际应用中可以通过中间接口解决账号密码映射关系,再通过常规单点登录方式集成。
3.3已有老系统单点登录集成
已有老系统因系统厂商、用途、版本不同,可以说集成方式千奇百怪,但集成思路是一致的。下面以作者集成国内知名邮件系统CoreMail和开源社交系统ThinkSNS为例说明。对于CoreMail的集成主要思路是:首先找到应用系统与CoreMail账号映射关系,然后根据映射的邮箱账号通过CoreMail接口获得SID,最后用户客户端根据SID和相关参数进行单点登录跳转。参照上面常规单点登录要素会发现,CoreMail单点登录集成思路与常规单点登录思路一致,CoreMail只是把令牌生成与解析和单点登录接收系统合并在一起而已,至于调用安全性解决方案也是安全性常规方式所提及。对应ThinkSNS的集成思路也是类似,首先找到应用系统与ThinkSNSl账号映射关系,其次根据映射的社交系统账号调用ThinkSNS接口,接口会返回类似UCenter服务端返回的javascript脚本,脚本包含跳转地址、令牌等信息,最后客户端浏览器执行脚本并单点登录到社交系统。总之,比较成熟和安全的单点登录集成思路基本类似,只是变通使用不同的组合和参数方式而已。
3.4代填账号和密码单点登录集成
代填账号和密码单点登录是指应用系统A已经知道应用系统B的账号和密码,当用户登录应用系统A后不再通过输入账号和密码方式登录到应用系统B,但对应用系统B来说用户还是采用输入账号和密码认证方式进入系统。下面分别介绍C/S、B/S下的常规实现原理:
C/S系统代填方式的实现,需要用户操作系统安装一个代填服务,首先注册被代填系统的信息,包含不限于启动路径、进程名称、登录窗体名称、账号控件名称、密码控件名称、登录空间名称等信息,其次代填服务时刻监控着用户客户端发送的代填请求(客户端的代填请求地址是本机和生成的令牌),当收到用户请求后,如果没有应用程序进程,则启动应用程序,并找到对应账号和密码的句柄。最后代填服务使用令牌调用服务获得账号和密码,并通过句柄填入对应账号框和密码框执行登录操作。
B/S系统代填方式的实现有多种方式,一种方式是与C/S代填方式类似,首先注册被代填系统的信息,包含不限于登录URL地址,用户名id,密码id,登录按钮id等,然后与C/S方式一样后台获取账号和密码后再通过id注入账号和密码执行登录。另一种方式是在被代填系统引入javascript脚本或脚本文件,当用户单点打开登录页面的时候,在URL地址上添加令牌或用户加密信息,然后由javascript脚本解析添加的信息并调用服务获得最终账号和密码信息,最后由javascript脚本完成单点登录操作。
3.5共享Cookie与参数加密单点登录集成
共享Cookie和参数加密实现单点登录集成方式是相对比较简单和不安全的实现方式,本作者不太推荐使用,但在企业应用中对于不太重要的应用系统的集成也是一种选择。
共享Cookie的原理是使用Cookie作为系统之间传递信息的媒介,存放用户凭证。当用户触发系统发起单点登录之后,应用返回一个加密的Cookie;用户访问单点登录接收系统的时候,携带上这个加密cookie,授权应用系统然后再解密Cookie并进行校验,校验通过则登录该系统。这种方式对于一些对用户信息非重要系统可以考虑使用,例如意见箱系统、内部社区等系统。主要是这种方式存在两方面的问题,第一、Cookie相对不安全并且与浏览器设置比较密切。第二、Cookie跨域访问问题,虽然Cookie跨域可以通过jsonp等技术解决,但这给使用共享Cookie简单理念蒙上了一层阴影。
参数加密传输实现单点登录的原理是用户登录单点登录发起系统之后,系统后端把用户等关键信息与时间戳等必要参数组合在一起并使用对称加密方式加密为一个秘钥串,然后跳转到单点登录接收系统的时候携带上秘钥串;接收系统收到秘钥串解密后,核对时间戳是否超时和秘钥串是否使用过,最后进行用户登录。参数加密传输实现单点登录的关键点在于防止加密方法泄露以及记录并核对秘钥串防止二次使用。根据企业和系统特性,适时在企业内部网络选择参数加密方式实现单点登录也是一种不错的选择。
4总结
综上所述,企业系统集成单点登录方案有很多种选择,每一种方案都有自身的优势和适配环境。对于企业单点登录方案选择和系统集成来说,作者建议企业内部要做如下工作:首先,需要选定一种“标准”单点登录集成方案或一套专用单点登录集成系统,新建系统都按标准集成。其次考虑系统用户账号的主数据源和统一标准,特殊情况下不能统一才考虑账号映射。最后根据系统特性分批分方案实施单点登录应用集成。单点登录实施涉及面广,是一项迭代工程,需要分析各系统特性,包括登录方式、用户信息存储与同步等细节,不能盲目的依靠购买系统解决问题。
“参考文献”
[1]邓劲生,郑倩冰.信息系统集成技术.清华大学出版社,2012
[2] 高爽.完全跨域的单点登录.http://blog.csdn.net/ghsau/article/details/20545513,2014-03-05
[3]凌承一.单点登录原理与简单实现.http://www.cnblogs.com/ywlaker/p/6113927.html,2016-11-29
[4] 王洪涛.单点登录原理与简单实现.https://www.ibm.com/developerworks/cn/websphere/library/techarticles/1202_wanght_sso/1202_wanght_sso.html,2012-02-09
作者简介
周游舟(1986-),男,重庆市綦江区人,学士学位,现为华夏航空股份有限公司信息技术管理部高级工程师。主要研究方向:项目管理及高并发技术应用。
作者单位
华夏航空股份有限公司 中国•重庆•江北国际机场 401120
发表原文地址: