在基于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统一身份认证系统白皮书.
上一页 [1] [2]