基于Web Service的统一用户系统
随着网络技术和信息技术发展,各种应用系统越来越多。对于用户来说每天需要使用的软件系统也很多,由于这些系统相互独立,用户在使用每个应用系统之前都必须按照相应的系统身份进行登录,为此用户必须记住每一个系统的用户名和密码,这给用户带来了不少麻烦。这对于多个运营机构的系统可能是无法避免的,但是对于同一个运营商的多个网站或是一个企业的多个子系统,就可以利用统一用户认证、单点登录等概念来解决这种问题。
1 统一用户认证和单点登录
1.1统一用户认证
统一用户认证为了解决多系统中存在的多重帐号/口令管理而提出的解决方案,它是由统一用户管理、统一身份认证和接口服务等三部分组成。统一用户管理,建立权威的、适合各应用系统使用的统一帐号数据库,帐号数据库可基于活动目录或关系型数据库建立。统一用户管理模块,可供系统管理人员和各单位内部管理员使用,可以分级维护所有的组织单位和人员信息,包括:用户添加、用户管理、组织单位管理、角色管理、用户角色关系配置。Www.11665.coM接口服务,对外提供标准的,允许其他应用系统调用。主要接口包括:组织架构和用户帐号信息的下载接口;用户登录验证接口;用户管理、组织架构管理的接口等。
1.2单点登录
单点登录(sso,single sign-on)是一种方便用户访问多个系统的技术,用户只需在登录时进行一次注册,就可以在多个系统间*穿梭,不必重复输入用户名和密码来确定身份。单点登录的实质就是安全上下文(security context)或凭证(credential)在多个应用系统之间的传递或共享。当用户登录系统时,客户端软件根据用户的凭证(例如用户名和密码)为用户建立一个安全上下文,安全上下文包含用于验证用户的安全信息,系统用这个安全上下文和安全策略来判断用户是否具有访问系统资源的权限。
1.3统一用户组的管理
用户组主要用来区别各类不同用户,通过把用户加入到某一个用户组来实现该用户的权限分配。管理员可以添加自定义的用户组,从而实现灵活的系统配置。
2 web service简介
web service主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 web service所使用的是internet上统一、开放的标准,如http、xml、soap(简单对象访问协议)、wsdl等,所以web service可以在任何支持这些标准的环境(windows,linux)中使用。注:soap协议(simple object access protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于xml的通讯协议。在此协议下,软件组件或应用程序能够通过标准的http协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
3 基于web service的统一用户系统的特点
3.1数据资源安全性
利用web service的开发方法最大程度的保护了数据库资源及用户信息的安全,甚至可以将系统数据库放在内网中,外部用户在登录验证时是无法直接通过网络访问到用户数据库的。而且由于用户的每次数据访问都要通过该系统,我们就可以监控到用户的访问要求是否合法,保障应用了该统一用户系统的其他系统数据资源的安全性。 3.2有效的记录用户的访问行为
同样由于web service的开发模式和用户验证的规则,使用户每一次的数据请求都要经过系统的验证部分,我们可以在这里利用统一的规则截获该用户请求数据的条件,比如检索关键词、查询信息的分类。在记录之后通过某种规则的筛选便可以对用户进行分类细化,从而提供更有针对性的服务及信息推送。
3.3不影响已有的系统核心流程
利用web service技术开发的用户系统可不影响已有其他系统的核心流程,只需要在客户端系统中的注册、登录、修改信息等模块中添加相应的web service方法调用的代码,就可以在客户端系统中进行上述操作的同时完成统一用户数据库的更新。
3.4一次开发多次利用
该系统在第一次开发完成并形成较为详细的开发接口后,对于需要应用该统一用户系统的其他软件系统,只需要在统一用户数据库中为新系统初始化一些基本的权限信息之后就可以开始应用了。对现有的数据库结构及程序不需要做更多的修改。
4 系统的设计原理及方案
4.1设计原理
统一用户系统的核心在于将所有的用户信息保存于*数据库中,任何用户在访问资源的时候都需要通过web service进行数据调用,所以系统可以在调用数据前对该用户进行验证,进入*数据库的用户表中验证该用户的有效性,如果验证成功将把这个用户的临时信息写在数据表中,认为是已登录状态,在下次访问时先检测这些临时信息,如果已登录则直接返回数据结果,如果未登录则重新请求验证信息。
4.2利用用户组进行权限划分
在整个统一用户系统中分为三个组群:用户、用户组、资源。其中用户为注册登录过程中的一般使用者;用户组为按一定规则划分的用户;资源则是根据不同系统来确定的,有的系统为某些特定的数据,有的系统为不同的频道,或者是某个功能。用户不与资源产生直接的访问关系,而通过组来完成。
所有的用户都被分到不同的组中,正常情况下,每个用户应只属于一个用户组。对资源的访问关系由组来完成,某一个用户是否对某种资源有访问的权限是由该用户所属的组是否对该资源是否有访问的权限决定的。
4.3重要表介绍
在基于web service的统一用户系统中,除了一般的用户系统中必不可少的用户表、用户组表、用户与用户组关系表、资源清单表等,最重要的表是登录状态表,它起到了一般系统中session或cookie的作用。
在该表中有用户帐号、权限标识、统一认证标识、最后访问时间几个字段,其中统一认证标识是该表的主键。由于该表访问极为频繁,因此保留必要字段的最小集是十分必要的。这几个字段主要有以下作用:
用户帐号:记录某个用户是否已经登录
权限标识:记录某个已登录用户在整个统一用户系统中的资源访问权限
统一认证标识:用于与用户帐号一并验证已登录用户的有效性
最后访问时间:用于判断是否访问超时
4.4系统工作流程
在整个统一用户系统的登录过程中,主要包含用户、需要访问的资源、web service接口、用户表、用户登录状态表几个主体部分。
首先,在用户第一次访问某个需要验证的资源或主动登录时,它手中只有用户帐号和密码,并没有登录状态表中的统一认证标识,这时它需要发送自己的用户帐号和密码将通过web service接口访问用户表以判断该用户的有效性,如果用户帐号和密码不匹配则验证失败。如果验证成功,则读取该用户的权限并生成32位的随机码写入登录状态表中,这个32位的随机码就是统一认证标识,用来在后续的操作中与用户帐号一并验证用户是否已登录或是否超时。之后返回给用户统一验证标识。
这时该用户的状态已经变为登录,当再次需要访问资源时,将只需要发送用户帐号和统一验证标识给web service接口。接口将认为该用户已经登录,直接在登录状态表中利用用户帐号和统一验证标识检索结果,如果存在记录,并且当前时间与最后访问时间间隔不超过系统默认的超时时间,便认为该用户有效且已登录,直接读取该用户的权限,如果权限认可则返回用户所需资源,如果没有访问该资源的权限则给用户相应的提示。完成后更新该记录的最后访问时间,以保持该用户的活跃状态。
如果在登录状态表中未检索到结果或当前时间与最后访问时间间隔已经超过了系统默认的超时时间,则认为该用户尚未登录或已经闲置过长时间导致超时。这时将返回提示并重新向该用户所取用户名和密码。
4.5开发方案简述
根据上述设计原理、表结构介绍以及系统的工作流程,即可进行统一用户系统的开发。不论使用java平台还是.net平台都可以完成所需的功能,并且可以跨平台使用。
5 总结
利用web service的技术,可以很好的解决统一用户认证的问题,不但减少用户的登录次数,也避免了直接对用户表的访问,保障了用户信息的安全。通过这个平台,可以令更多的系统便利、高效、稳定的为用户服务。
参考文献:
[1]joseph / bustos.net web服务入门经典——c#编程篇.清华大学出版社.
[2]etban / cerami. web服务精髓,中国电力出版社.
[3]中科汇联.sso统一身份认证系统白皮书.