论文部分内容阅读
信息系统在各行各业的应用已经从单一系统模式发展为复杂的多系统模式,各种应用系统数量持续增加,用户要登录多个分散的系统,需要多次输入登录信息和管理多个用户信息,这不仅降低了用户登录系统的效率,用户信息也存在被非法获取和破坏的安全隐患,同时也严重影响了企业资源的共享和集成。于是单点登录技术被提出并受到了广泛的重视,如基于Kerberos、集中认证服务(Central Authentication Service,CAS)、安全性断言标记语言(Security Assertion Markup Language,SAML)等单点登录技术。虽然这些技术从一定程度上解决了用户方便的登录多应用系统的问题,但部署这些技术需要耗费大量的精力,给系统应用者带来较高的额外成本。并且,这些技术几乎没有考虑登录顺序问题,而有序登录在实际应用中是经常出现的。 针对以上问题,本文提出一种基于异步JavaScript和XML(Asynchronous JavaScript and XML,Ajax)的轻量级单点登录(Single Sign-On,SSO)解决方案,实现对多种分布式Web信息资源的单点用户身份认证方法,并能实现有序单点登录。该方法采用Ajax技术实现Web单点登录系统中客户端与服务器的异步通信交互,和传统单点登录方法相比,服务器无需复杂的部署,降低了系统集成单点登录功能的复杂度,改进了传统单点登录的不足;使用开源框架Thinkphp构建一个易扩展的单点登录系统原型,为用户实现对各个权限内子系统的单点登录提供了一个简单便捷的入口;运用Facade模式获得单点登录界面到各个子系统的统一接口,完成单点登录客户端与各个子系统的Ajax异步通信,实现用户验证信息的分发;各个子系统服务器端到统一的权限数据库对用户身份信息进行验证,并在用户浏览器分别为每个子系统创建独立的Session,从而完成单点登录,较好的解决了跨平台Web应用中单点登录Session共享困难的问题。利用统一的权限数据库实现对用户信息和各个子系统信息的集中管理,减少了用户信息验证错误的情况,提高了数据的安全性和系统总体性能;通过灵活定制子系统的优先级,实现了不同于传统单点登录的有序单点登录,提高了系统的运行效率和用户体验,具有一定的研究价值和应用价值。 本文实验以有序单点登录的应用场景为例,采用Apache Web服务器、PHP程序设计语言、Mysql数据库管理系统等搭建开发环境;采用Thinkphp开源框架模拟了两个购物网站的有序登录和多子系统应用的有序登录;采用Facade模式设计统一服务接口;采用基于Ajax的Http post方式进行客户端与服务端的跨站异步通信。实验表明,本文方法可以较好的解决多个购物网站间用户身份统一认证问题,以及多子系统的企业应用系统中用户有序登录问题,具有一定的参考价值。本系统仍存在一些不足之处,客户端还可以在此基础上进一步扩展和改造。