经过最近数个统一认证系统部署和整合项目,感到在公司整个应用架构的搭建中,最好能将统一认证设计和部署为后台服务,即:
1,统一认证系统通过Web Service,REST,AJAX等接口形式提供注册,认证,授权等核心功能服务,其它系统利用这些接口与统一认证完成整合和交互;
2,架构搭建完成后,统一认证核心部分最好不提供任何普通用户可访问页面,在网络环境允许的情况下,可将其网络配置为外网不可见;
3,在系统耦合方面,只有其它系统调用统一认证核心部分的功能和接口,统一认证核心部分除自身接口外,不调用其它任何系统的模块和接口;
4,情况允许时,将统一认证附带的用户管理功能和页面做成一个可与核心拆分的,相对独立的模块甚至系统,其对用户数据和权限的管理,也通过调用核心部分的接口来实现;
之所以这样强调是因为目前在统一认证的设计实现中,通常会出现以下误区:
1,统一认证提供用户注册和登录页面。
这在初期会带来便利,纳入统一认证管理的应用系统将不再需要单独提供用户注册和登录页面,同时减少了应用系统和统一认证集成时的部分工作。但是这样做随着集成系统数目的增加和复杂情况的出现,后患无穷。
首先,集成应用系统数量增加之后,统一认证访问效率成为整个应用架构的瓶颈,所有的注册和登录页面访问负载被一个系统所承接。当然,这可以通过统一认证系统自身负载优化进行解决,但效果不会太理想。
另外,随着集成系统的多样化,注册,登录页面的美工和风格将会受到严重的挑战。注册登录后转入的应用系统页面,风格变化太大会让用户体验效果奇差,但你却不可能设计出一个能和纳入管理的数个或者数十个应用系统风格都相匹配的页面。另外,用户注册信息必填项和格式的不同要求如何实现,也会让人倍感头痛。
再者,用户通过统一认证登录并由统一认证负责登录后的用户转向,随着集成系统数量的增加,统一认证管理成本会不断加大并事倍功半。保证每一个系统是否运转正常逐渐都将变为统一认证需要负责的工作,否则,任何一个系统的故障都将导致部分用户登录后报错。对用户来说,统一认证登录出现了问题,但是对于统一认证管理员来说,却不能去负责应用系统故障的原因并尽快解决。更糟糕的是,你无法方便的将这个问题屏蔽,总有用户在登录后才发现无法得到某项服务。
2,统一认证核心服务和用户管理功能紧耦合。
初期由于集成系统较少,将用户管理统一在一起,可能会有利于减少管理工作的工作量。但是随着集成系统的增加,用户管理需求不可避免地将出现多样化。不同应用系统的管理员对用户的管理会有不同的要求,不同应用系统配置的管理员素质也是千差万别,你不能要求每一个管理员都学会统一认证提供的那个大而全的管理界面。况且,你能不能提供出一个能满足所有管理需求的大而全的管理模块,更是一个大问题。
这样逐渐的就会造成两种可能后果,第一是各个应用系统开始在自身备份用户数据,将用户管理逐渐又移植到自身系统,发展下去,统一认证的集成推广不可避免地就会受到影响,甚至被取消的呼声也会越来越高;第二种可能就是统一认证自身变得越来越复杂,直至崩溃。
综上所述,如果能在最初设计和实现统一认证时多考虑一下其发展空间,将其核心服务和附属功能进行合理划分并以适当的方式进行实现和部署,不但可以减少或者消灭以上问题,在长久运行的网络信息安全性上,也会出现不少的亮点。




