浅谈简易单点登录系统的实现

时间:2022-08-08 09:32:27

浅谈简易单点登录系统的实现

摘要:在一个单位中,通常有若干个应用系统。每个应用系统基本上都要求用户身份验证才能使用,用户同时使用多个不同的应用系统需要分别登录,并进行频繁的切换,操作麻烦;并且用户必须同时牢记多套用户名称和用户密码,经常出现忘记用户名称和用户密码的情况,需要向网络管理员查询,增加了网络管理员的工作量。使用单点登录系统能够很好的解决上述问题,一次登录就能直接使用多个应用系统,给用户和管理员带来了极大方便。本文就实现一个简易单点登录系统进行了详细阐述。

关键词:SSO单点登录系统 EAI企业应用集成 简易 B/S架构 加密解密

一、存在的问题及常见的解决方案

在一个单位中,通常具有多个不同的应用系统。而应用系统为了保证数据的安全性,通常都带有自己的帐号子系统。这样,单位中有若干个应用系统就对应有若干个帐号系统。用户每次使用应用系统时,都必须输入用户名称和用户密码,进行身份验证;而且应用系统不同,用户账号就不同,用户必须同时牢记多套用户名称和用户密码。特别是对于应用系统数目较多,用户数目也比较多的企业,这个问题尤为突出。由于用户在访问不同业务系统时需要独立访问该业务系统,需要在各系统间频繁地切换,操作较复杂,无法快速地获得相关业务信息并加以分析利用;此外,用户在进行业务操作时,需要分别登录到不同的应用系统中,由于系统较多,各个应用系统的帐号名称也不一致,导致用户需要记忆多个帐号和密码,用户经常忘记用户名或密码,或者弄错了应用系统的帐号信息,需要向网络管理员查询帐号信息。

我单位是一所中等职业学校,校园网中拥有多套应用系统。如校园网应用平台、OA办公自动化平台、收费查询系统等等,校园网还为每一个用户在文件服务器上提供一定的文件存储空间,文件服务器也有自己的一套域账号系统。这样,在校园网中,用户使用多个应用系统就拥有多套不同的帐号。网络管理员经常会遇到教职工和学生询问帐号信息的情况,增加了不少工作。

有没有一种解决方案,实现将多个应用系统集成起来?实现“一次登录”,就可以直接使用多个应用系统。集成的若干个系统使用起来感觉像只有一套系统。

要解决这个问题,最常见的解决方案是采用单点登录系统(SSO)。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。SSO集成了统一的身份认证、统一的授权管理、统一的审计等功能,架构完善,安全性高。商用的单点登录系统通常功能完善、价格昂贵,对于一个应用不是很多,安全要求不是很高的单位来说,购买商用的单点登录系统并不是十分必要的。

另一种解决方案是采用EAI(企业应用集成)方案。EAI是将基于各种不同平台、用不同方案建立的异构应用集成的一种方法和技术。EAI通过建立底层结构,来联系横贯整个企业的异构系统、应用、数据源等,完成在企业内部的ERP、CRM、SCM、数据库、数据仓库,以及其他重要的内部系统之间无缝地共享和交换数据的需要。EAI将进程、软件、标准和硬件联合起来,在两个或更多的企业应用系统之间实现无缝集成,使它们就像一个整体一样。

单点登录系统SSO只解决了登录的方便性,集成的若干应用系统没有任何整合,应用系统之间没有任何的关联,相互之间还是数据孤岛。而EAI则属于深层次的应用集成,EAI一般在表示层、业务逻辑层或数据层进行集成。集成系统之间可能是数据共享或业务逻辑共享,或者集成了若干个应用系统的界面。EAI真正实现了应用系统间的数据共享,属于真正意义上的应用系统集成。其实现远比SSO难度要大得多,实现要复杂的多,成本也高很多。

二、提出新解决方案的设想

对于一个规模不是很大,应用系统不多,应用系统安全性要求不高的单位来说,使用商用的SSO单点登录系统产品价格昂贵,不是十分必要。自己做一个完善的单点登录系统又难以实现。采用EAI方案就更加不可能。能不能做一个简易的单点登录系统,使用简单有效的技术,实现单点登录系统SSO的主要功能,达到将多个应用系统整合的目的呢?

简易单点登录系统解决方案设想如下:有两个或以上应用系统,每个系统都有自己帐号子系统。为了简单快捷,简易单点登录系统不额外使用一个统一的登录平台,而是使用其中一套应用系统的登录平台进行用户身份验证。提供登录界面,用来进行身份验证的应用系统称为主系统,集成到主系统的其他若干个应用系统均称为辅系统。主系统登录后,通过链接方式,无需登录就可以直接进入到其他的辅系统。使用效果就像在同一套系统中,实现单点登录的目的。简易单点登录系统除了实现单点登录系统的主要功能外,必须保证稳定可靠,并具备必要的安全性。

实现简易单点登录系统的目标是在不降低原有系统安全性的前提下实现多个应用系统的单点登录。牺牲安全性或降低安全性的单点登录系统不具备使用价值。

三、可行性分析

1.存在的主要技术问题及其解决方法

现在的应用系统大多采用B/S架构,登录界面和系统主界面通过页面调用的方法实现。可通过向登录界面传递帐号信息,实现系统的自动登录。或者直接跳过辅系统的登录界面进入到主界面。而对于C/S界面的应用系统,因登录系统和主界面是一个整体,并编译成一个只有计算机能识别的二进制可执行代码,根本不知道应用程序接口,除非询问该应用系统开发人员,否则难以实现整合。

要在主系统中添加其他辅系统的链接,对于网页界面的应用系统来说,是很简单就能实现的。

链接进入辅系统时,可以跳过辅系统的帐号登录界面,直接进入辅系统。或者在进入辅系统时向登录界面传递帐号信息,然后进行自动登录进入辅系统。对于网页界面的应用系统来说,这些都比较容易实现。

由于集成若干个应用系统,每个应用系统都有自己的帐号系统,这样就存在多套帐号系统,实现单点登录要做到尽量不修改现有的应用系统,为了简单方便,要尽量保证所有应用系统帐号信息的一致性。一个简单的解决办法是“一个帐号,一个密码”。即用户在所有的应用系统都使用相同的帐号名称和设置相同的密码。这点也是很容易实现的。

应用系统的密码是允许用户修改的,为保证密码一致性,需要做到只有主系统一个地方可以修改密码,其他辅系统都不能修改用户密码。当主系统修改帐号密码时,能自行修改其他辅系统的密码。要解决这个问题,可以通过调用程序的方法实现,这需要管理员编写程序代码。在主系统修改密码后,自动调用该程序修改其他辅系统的密码。实现这一点有一定的技术难度,但这种方法可行,并需要管理员有一定的编程技术。

2.简易单点登录系统的安全性是否达到使用要求?

如果单点登录系统的安全性很差,很容易被用户破解,那么这套系统没有使用价值。因此,简易单点登录系统在传递用户账号信息的时候,可以采用加密技术,传递帐号信息的密文。客户端通过解密程序对密文进行解密,解密程序也要编译成不可读的二进制代码,保证代码的安全性。可以说,简易单点登录系统的安全性没有降低,是安全可靠的,符合使用要求的。

四、简易单点登录系统的实现

目前,我单位主要有几个应用系统,校园网应用平台、OA办公自动化、应用扩充系统、文件服务等。这几个应用系统除了文件服务外,都是B/S架构的应用系统,它们都有自己的账号子系统,具有自己的登录界面。文件服务使用域账号系统,没有登录界面。由于不采用一套单独的登录平台,简易单点登录系统其将中使用最频繁的校园网应用平台作为简易单点登录系统的主系统,实现用户身份验证;其余的应用系统作为辅系统,通过主系统的链接进入。

实现简易单点登录系统需要做以下五项工作:

1.为了简单方便,主系统和其他所有辅系统都使用相同帐号名称和相同密码。并且账号名称不允许改变。建立用户帐号时,需要在主系统和其他所有辅系统各自建立相同的帐号和设置相同密码。保证所有集成的应用系统“一个账号,一个密码”。

我单位账号名称采用8位阿拉伯数字组成。学生直接使用8位数字的学号作为账号,为了配合本次单点登录系统的实行,教职工也重新编排了与学生类似的8位数字的工号。达到了学生和教职工账号的统一。

如果每个应用系统的账号名称和账号密码不一致可以吗?这当然可以。不过实现起来有点麻烦。需要在数据库中专门设一数据表来记录用户在不同系统的账号名称和账号密码信息。在主系统中点击进入辅系统时,主系统读取该辅系统的账号名称和密码,传递给辅系统,实现辅系统的自动登录。

为了简单快捷,我单位暂时使用相同账号、相同密码的方法来实现简易单点登录。

2.在主系统添加进入辅系统的链接。把所有需要集成的辅系统的链接都添加到主系统中,用户通过点击链接进入辅系统。

我单位的简易单点登录系统使用现有的校园网平台作为主系统进行用户身份验证。该校园网平台采用B/S架构,允许用户在系统主页中添加自己喜爱的其他链接。为实现单点登录,需要管理员统一为所有的用户添加若干条到其他辅系统的公共链接。

3.主系统登录后,通过点击链接进入其他辅系统时需要把账号信息传递给辅系统,实现辅系统的登录。这是简易登录系统的核心技术,也是难点之一。

主系统登录后,服务器需要用会话变量保存用户名和用户密码。需要修改主系统的登录页面,在页面中添加服务器代码,增加两个会话变量用于保存登录的用户名称和用户密码。当用户点击其他辅系统的链接时,主系统的服务器读取保存的会话变量,把用户名称和用户密码传递给辅系统。

通过点击链接进入其他辅系统时,主系统需要向辅系统的登录界面传递敏感的帐号信息,包括帐号名称和帐号密码。账号信息通过网络传递到客户端,可能会造成账号信息的泄漏。如果传递的是明文信息,账号信息会很容易被用户截获和识别,存在较大的安全性问题。

解决安全性的办法就是对需要进行传递的账号信息在服务器端进行加密,传递到客户端后,客户端的解密程序对密文进行解密,还原账号信息。加密工作在服务器端完成,不存在安全性问题;解密工作是在客户端进行,对服务器传递过来的密文进行解密。并且当服务器改变加密算法时,客户端解密程序能实现自行更新,保证加密算法和解密算法的一致性。

在主系统中登录辅系统流程如下图一:

B/S架构的应用系统,客户端使用浏览器运行web应用系统。解密程序在浏览器中以ActiveX控件的形式存在,ActiveX控件是经过编译的不可读的二进制代码,保证了程序代码的安全性。控件以文件方式保存在服务器端,用户通过浏览器进入辅系统的链接页面时会自动下载控件,保存在客户端中。当服务器控件更新时,客户端的控件也会随着自动进行更新。

为了保证客户端能顺利下载解密程序的控件,需要在客户端浏览器做相应的设置,允许ActiveX控件的下载,或者把主系统设置成可信站点。

基于我单位应用系统的安全性要求不是特别高,加密算法采用多层BASE64编码加干扰字符的算法。BASE64编码算法简单快速,解密难度小,但采用多个干扰字符和多层BASE64算法后,采用的加密层数和若干个干扰字符只有程序员知道,解密难度会大大增加。我单位集成的应用系统中基本没有非常机密的内容,安全性要求不高,该算法已能满足我单位的使用要求,暂时没有必要更换其他安全性更高的加密算法。如确实需要改用其他加密算法,也只需在服务器端修改加密程序和更新客户端解密程序的ActiveX控件便可,实现起来非常简单方便。

4.当主系统修改密码时,通过调用程序,自动修改其他若干辅系统的密码。使主系统和辅系统密码一致,达到密码同步的效果。自动修改辅系统密码通过程序实现,需要管理员进行程序代码的编写工作。程序中每修改一个辅系统的密码就需要一段相对应的代码。

应用系统中,对于账号信息保存方式的不同,其采用的修改密码的方法也不同。如果账号信息是以明文形式保存在数据库中,那么可以通过程序直接修改数据库中的账号信息便可实现,非常简单快捷。对于账号信息以密文形式保存在数据库中的情况,或者不能读取账号数据的情况,解决办法有两个。第一种方法是在主系统修改账号密码时,截获用户的新、旧两个密码,然后通过调用程序,自动修改辅系统的密码,如修改域帐号的密码。调用程序修改辅系统密码的操作都是在主系统服务器端中进行。流程程如下图二。

第二种方法是在主系统修改账号密码时,截获用户的新、旧两个密码,并把新、旧密码信息发送给该辅系统“修改密码”的界面,然后自动执行“修改密码”的功能,实现辅系统密码的修改。这种方法在我单位的简单登录系统中暂时还没有采用过。

对于不能通过程序修改应用系统用户密码,也不能通过向辅系统“修改密码”界面传递帐号信息的情况,方法是固定该应用系统用户密码,用户不得修改,并把用户的密码信息保存在数据库中。当主系统通过链接进入该辅系统时,主系统从数据库中读取该辅系统的账号信息,并把它以密文形式传递给辅系统,实现辅系统的登录。一般来说,这个固定的用户密码复杂度越高安全性就越好。这种固定辅系统密码的方法,安全性不高,在不得已的情况下才采用。

5.隐藏或屏蔽其他所有辅系统“修改密码”的功能。在辅系统中不能修改账号密码,修改密码只能在主系统中进行。

为了保证主系统和辅系统密码的一致性,所有集成的应用系统只允许在主系统中修改密码,所有其他的辅系统中都不能修改密码。否则,就不能实现所有应用系统“一个帐号,一个密码”的目标。为了防止用户在辅系统中修改密码,需要隐藏或屏蔽其他所有辅系统修改密码的功能。

在B/S架构的应用系统中,“修改密码”的选项通常是以链接的形式存在,在网页中删除或屏蔽链接是轻而易举的事。有些系统可以直接通过修改设置屏蔽“修改密码”的功能;或者可以通过编辑修改网页的方法,把“修改密码”功能的链接去掉;又或者把“修改密码”的链接修改为指向一个不存在的页面,使页面访问无效。

五、实际应用情况及其效果

该简易单点登录系统在我单位使用超过半年,一直以来运行稳定可靠,用户询问账号和密码的情况大大减少,并且暂时还没有出现安全性方面的问题,大大方便了用户使用各种应用系统,用户反映良好。由于减少了账号登录的障碍,多个应用系统的使用率有所增加。实践证明,该简易单点登录系统的使用效果令人满意。

六、存在的问题和不足,改进方法

对于不同的应用系统,使用的集成方法不一样,集成难度也不一样。目前该简易单点登录系统只支持B/S架构的应用系统进行整合。某些专用的C/S应用系统因技术问题,还不能集成到简易单点登录系统中。在新增用户账号的时候,需要管理员对每个应用系统进行手工添加和设置工作,并且要保证所有应用系统中的账号名称和账号密码的一致性,这给管理员带来了一定的工作量。

简易单点登录系统功能简单实用,需要对简易单点登录系统进一步完善和扩展,使之具有统一授权功能、日志记录和审计等功能。

七、总结

实践证明,该简易单点登录系统是安全可靠的。一次登录,就可以直接使用多个应用系统,实现了单点登录的目标,大大方便了用户的使用,也减轻了管理员的工作。在安全性要求不是特别高的场合,采用该简易单点登录系统的解决方案是能够满足实际使用要求的,能为单位节省一笔可观的费用。目前该简易单点登录系统功能简单,安全性不够强,需要在今后的使用中不断改进、不断完善和不断扩展。

参考文献

[1]房大伟、吕双、刘云峰,《编程宝典》,人民邮电出版社,2011年

[2]李勇平,《 2.0(C#)基础教程》,清华大学出版社,2008年

[3]段钢,《加密与解密(第三版)》,电子工业出版社,2008年

上一篇:农村集体土地权属调查问题的探讨 下一篇:VLAN 技术及其在校园网中的应用