Windows应用单点登录系统设计与实现
2014-07-21林为伟
林为伟
(福建师范大学福清分校,福建 福清 350300)
Windows应用单点登录系统设计与实现
林为伟
(福建师范大学福清分校,福建 福清 350300)
本文涉及的SSO系统克服了传统SSO系统的缺点,对应用系统登陆过程进行了分离解析,采集提取了W indows应用程序的界面中应该有共性信息,即用户登录的时候将用户的用户名、密码信息和不同的窗体的句柄的坐标位置信息,并选择调用相应的系统API函数,形成一个W indows消息队列来记录下用户登录的过程,实现了W indows应用系统的单点自动登录,实际使用效果良好.
SSO;模拟自动登录;W indows消息机制;w indows窗体结构
进入新世纪以来,人类获得了快速的发展.在追求办事效率的情况下,人们对信息化的建设也是越来越加重视.经过多年的发展与国家对信息化建设的重视以及投入之下,现在信息化建设更加趋于完善.信息化对大家来说并不是一个陌生的词语,它存在于人们应用的各种系统之中,其中就包括:办公系统、财务系统、人事管理系统、图书管理系统等等.当然,任何事物都有两面性.一个好的应用系统可能会对人们带来很大的便利,可是,应用系统多了以后用户需要记忆的用户名以及密码也是越来越多,这也就造成了不便,用户也会感觉很繁琐.如果在登录系统的时候用户名或者密码记忆出错的话很容易让用户反感.同时,用户名与密码的安全也是很重要的,不同的应用系统安全性可能不同,导致一些安全性较差的应用系统泄漏用户的个人信息.本文就是要寻找一种解决方案,尽可能让用户一次性登录,没有那么多的用户名以及密码.于是,我们应用到了SSO[1](Single Sign On,单点登录)技术,一次登录就可以访问多个系统而不要重复性登录.这样不仅让用户的个人信息安全了也让用户不再感觉那么繁琐,大大提供了现代企事业的信息化水平.
1 传统SSO方案的实现机制与局限性
SSO技术在现代企业应用系统之中是比较流行的,它主要通过一次登录实现访问所有的可信任的应用系统.SSO技术可以将本次登录的信息映射到其它应用系统之中,从而实现免登录的效果.然而,SSO技术实现的前提就是不同的应用系统之间要有一个共同的认证系统,这样才能保证单点登录的效果.
实现传统SSO技术来完成的一个典型代表就是使用Kerberos协议[2],Kerberos协议(一种网络认证协议)采用票据来访问目标系统,它采用C/S结构,能够实现相互认证,同时在目前的企事业应用系统当中这种技术也是比较流行的.随着信息化技术的快速发展与整合,很多企业也在应用统一的SSO技术,如IBM的WebSphere和Microsoft的. NET Passport[3].
传统的SSO方案会有一些局限性,举个例子来说:传统的SSO解决方案只能支持WEB应用系统,而对如今大家应用比较广泛的Windows应用系统来说并不支持,这样的话导致用户在应用SSO系统是必须应用传统的SSO方案所提供的API或者Agent才行,这样就造成了很大的局限性.
2 系统设计
2.1 系统设计思想
既然传统的SSO技术有局限性以及缺点,那么我们在设计新的系统的时候就需要考虑到这点,克服其缺点.新的SSO系统的设计思想就是:首先,要克服最大的局限性及应用系统支持的单一性.因此,新的业务系统不仅支持Web应用系统而且还要支持Windows应用系统,这样的SSO系统才能被广大用户所接受.其次,将传统意义上的单点登录技术发展为自动登录技术.这样的话用户也就不用记忆自己的用户名和密码,点击自动登录即可.整个登录对用户透明[4].
新的SSO系统支持Windows应用系统,因此开发人员在部署的过程中不需要对原有的应用系统进行更改,提高了开发人员的部署速度.全新设计的SSO系统其用户名以及密码在第一次登录之后就将其信息存入服务器的数据库之中.当SSO系统首次进行部署的时候就会在每个应用系统中进行采集配置,从而产生一个配置文件,然后将这个配置文件保存到相应的数据库当中.当用户在单点登录时就会通过配置文件进行验证登录.
2.2 SSO系统的总体架构
针对以上的系统设计思想,本系统的软件架构如图1所示.
图1 系统软件架构图
3 系统核心技术
Windows应用系统作为当今的主流系统深受用户的喜爱,它操作简单,界面友好、人性化,而且很多办公软件是建立在Windows操作系统的基础之上的.现在的Windows操作系统的应用界面都是由多窗体组成的,操作系统在运行的时候都会给不同的窗体分配不同的句柄,这样SSO系统在运行的时候我们就可以根据应用系统所对应分配的句柄来发送消息,以此来达到控制不同消息窗体的目的.
单点登录系统分析采集了Windows应用程序的界面中应该有共性信息,然后在登录的时候将用户的用户名、密码以及不同的窗体的句柄进行收集,然后将这些信息保存到数据库当中.用户下次再次登录的时候就可以从数据库当中进行调用然后与所输入的用户名密码进行校验.
单点登录系统的原理其实很简单,它在登录的时候需要对Windows应用系统的窗体结构进行分析处理,这样记录下所要进行发送的消息.具体登录过程如图2所示:
图2 典型的Windows应用系统自动登录过程
4 系统具体实现
4.1.NET中使用系统API函数
新的SSO系统在设计的过程中调用了许多API函数,这样在应用的过程中直接进行调用就可以了.但是,另一方面,.net类库在对API函数的封装并不完整,因此需要一个统一的调用格式.
在进行调用的过程中为了调用的灵活性可以将所有调用的API函数统一封装到类Api.cs之中.这样的话,下次再进行调用的时候就不用重复以上代码了,直接调用API.cs类就可以了.
4.2 针对不同Windows应用系统进行分类
本系统在进行设计的过程中针对的是Windows应用系统,首先将不同的应用系统进行了分类,以便后续系统的设计.将如今的Windows应用系统分成了两类:“通用型”以及“专用型”.所谓的通用型应用系统是指那些应用系统的界面比较统一,输入框、表格以及按钮比较单一,因此可以将这些分成“通用型”.
有些应用系统的界面比较复杂,比如说QQ,WPF等应用系统的界面,他们的输入框等并不是窗体,因此将这些分成“专用型”.
4.2 提取登录过程的共性信息
应用系统在登陆的过程中首先要获取它们的共性信息,然后通过不同的句柄来判断是哪个应用系统.上文中我们讲到了将Windows操作系统分成了“通用型”和“专用型”两类系统,这对这两类不同的系统应该有不同的处理方法.下面我们具体介绍一下这两种不同的处理方法.
4.2.1 对于“通用型”Windows应用系统.方法如下:首先将应用系统的顶层窗体利用EnumWindow()函数进行枚举.然后通过GetChWin()和GetNextWin()得到其树状的窗体结构;另外也可以通过调用EnumChildWin()函数,枚举出主窗体中的所有子窗体(控件)的句柄,从而获得作为凭证的窗体的句柄.得到句柄后然后再对应用系统中用户输入的信息进行校验,校验成功后即可登录.
4.2.2 对于“专用型”Windows应用系统,不同于通用型应用系统那么简单,首先要根据坐标来定位每一个控件.
4.3 用户登录凭据模拟输入的实现
SSO系统设计完成之后我们需要进行一下模拟验证.用户登录凭据模拟输入根据应用系统类别的不同,分为两种方式.
4.3.1 利用SendMessage()函数直接向目标窗体发送消息.通过上面的讲述,我们知道“通用型”应用系统中的窗体可以获得窗体的句柄,从而可以得到相关的信息,如果我们要向目标窗体发送相关消息的话就需要用到一个函数:SendMessage()函数.
对于可以获得窗体句柄的窗体来说可以通过这种方法来进行发送消息,这种方法有他的优点:这种优点就是我们可以通过对模拟输入来实现目标程序的自动登录,而且对前台的一些操作也不会有什么影响.
而这种方法自然也有它的缺点,其缺点就是我们不能对所有的窗体都通过这种模拟输入的方法来进行处理.有些特殊的窗体基于安全因素的考虑是不能够使用SendMessage()函数的.当然,值得注意的是,有些窗体中的输入框根本就不是人们所认为的窗体.因此,使用这种方法之后也会造成不必要的麻烦.
4.3.2 利用keybd_event()函数.如果第一种方法不能支持的话我们就只能寻找其它的方法了.我们可以利用另一种函数:Keydb_event函数进行模拟输入,其函数定义如下:
上述两种函数是比较常用的函数,如果这两种函数都不能解决的话,MapVirtualKey()函数就可以将一些虚拟的代码转换成需要的扫描代码,因此,如果上述两种函数都不能解决的话可以通过第三种函数来解决,大部分的程序都可以通过这种方式来解决.
优点:该函数能够适合大部分的程序,适用性强.
缺点:该函数的缺点就是,如果目标程序是活动的窗口的话就无法实现后台模拟输入.
5 结束语
本文涉及的SSO系统克服了传统SSO系统的缺点,而且实现了Windows应用系统的单点自动登录,提高了企事业单位的工作效率,而且使企事业单位的应用系统更加安全快捷.但是不足的地方就是:Windows应用系统自动登录的时候不能够实现后台登陆,比如QQ等;另外,对于一些JAVA开发的程序也无法实现自动登录.
〔1〕康威,李凯.统一用户认证和单点登录解决方案[EB/0L],计算机世界报,2005,36.
〔2〕Kohl J,Neuman C.RFC 1510,The Kerberos NetworkAuthentication Service(v5),IETF,1993.
〔3〕M icrosoftCorporation M icrosoft.NET Passport Technical Overview,2001.
〔4〕雷爱平.基于网格支持单点登录的企业级分布式权限管理框架(PM I)系统[D].浙江大学出版社,2005.
〔5〕MSDN W indows and M essages.http://msdn. m icrosoft.com/en-us/library/ms632586(v=VS. 85).aspx.
〔6〕中国惠普有限公司惠普灵动单点登录(SSO)解决方案[EB/OL],2005-8-29.
TP393
A
1673-260X(2014)03-0028-03