文|畅文丁
随着信息化的迅猛发展,政府企事业单位和机构不断地基于Internet/Intranet建设业务信息系统,而这些业务系统都要求实现用户管理、身份认证、授权等必不可少的安全措施,新建系统与已有系统的继承或融合上,特别是针对相同的用户群会带来以下的问题:1、多个用户管理和身份认证系统会增加整个信息系统的管理工作成本;2、用户需要记忆多个账号和口令,使用极为不便;3、无法实现统一认证和单点登录,影响系统间资源整合的效果,也无法统一实施安全策略;4、无法统一分析用户应用行为。解决以上问题有必要建设统一用户管理和认证平台实现统一用户管理、统一认证、单点登录、多点漫游便于安全管理、运维管理和用户使用。下面结合实际工作经验,针对应用系统与统一认证平台集成方案中比较常见的正向代理和反向代理技术谈一谈两者的实现原理和比较:
1、正向代理技术或者叫代理插件技术(agent plugin), 在集成实施的时候需要部署在应用软件前端的Web服务器上,以HTTP Server插件的方式进行部署。对于后台应用的访问,会由代理插件进行拦截,然后再进行认证和授权的动作(见图1)。
图1 正向代理的集成方式示意图
用户通过浏览器访问统一门户,登录系统,登录请求首先发送到认证中心,进行统一的用户认证,认证通过后再携带SSOUser信息对各应用系统进行访问。具体实现步骤为:
(1)用户请求访问业务系统,填写用户名和密码;
(2)代理程序将用户填写的用户名和密码发送到统一认证中心;
(3)统一认证中心验证用户信息的有效性,若有效,则生成一个SSOUser信息给用户;
(4)用户携带SSOUser信息去访问系统,匹配相应的操作权限;
(5)用户完成此次操作任务;
(6)用户操作完毕,退出登录。
在正向代理集成方案中,各应用系统均部署认证中心的代理插件,插件的作用主要为应用系统与认证中心的通信和数据传输,拦截用户对应用的请求,根据不同的请求,触发不同的行为,比如判断用户提交的用户名和密码,获取后发送至认证中心进行认证。JAVA平台的代理形式通常为部署JAR包,主要逻辑由JAR包中的filter执行,.NET平台插件介质形式通常为DLL文件,主要逻辑由HttpModule及其调用的类执行。
2、反向代理方式需要部署在独立的服务器上,对于应用的访问会集中到反向代理所在的服务器,然后再进行认证和授权的动作。
图2 反向代理的集成方式示意图
用户访问应用系统首先要访问反向代理服务器,代理服务器接收到访问请求后到源服务器上获取内容,把内容返回给用户。统一认证反向服务器通常包括认证模块,反向代理模块和缓存,认证模块负责访问认证中心,获取认证结果;反向代理主要进行地址转换,将反向代理服务器中目录映射到需要被代理的服务器上;缓存保存用户访问过的内容。具体实现步骤如下:
(1)用户通过浏览器访问web服务器,web服务器将请求递交给反向服务器;
(2)用户提交用户名口令给反向代理服务器;
(3)反向代理服务器通过认证模块访问认证中心,验证合法性;
(4)用户通过认证后,认证系统形成一个凭证(token);
(5)认证中心通知反向代理服务器认证结果;
(6)反向代理从缓存或通过请求重定向到web服务器取回页面和数据转发给用户,访问流程结束。
当用户登录A系统web服务器成功后,登录其他系统服务器时,反向代理服务器认证模块从cookie中取得认证凭证,发送到认证中心验证有效性,如有效可以继续访问,如无效则提示用户重新进行认证。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
从集成部署上看,正向代理方式需要在应用系统安装代理插件,应用系统还需做一定的定制改造,反向代理方式通常无需应用系统进行开发改造。因此相对来说正向代理是一种紧耦合式的集成方式,反向代理为一种松耦合的集成方式。
由于正向代理方式在应用系统端安装了代理插件,系统与认证中心的通信及有关逻辑处理由插件来完成,因此正向代理方式效率和性能相对反向代理方式较高,反向代理方式对代理服务器的性能要求较高,若应用系统较多,访问量较大时此处容易形成瓶颈。
正向代理较反向代理技术相对成熟。
反向代理方式通过浏览器传递了认证凭证,一定程度上存在着被拦截的安全隐患。还有反向代理方式使用统一的用户名密码只能通过统一的门户登录认证代理服务器不能通过原系统登录入口实现认证,如果认证服务器已经认证过的用户在其自身业务系统中的密码修改了,那么如果用以前的密码在认证服务器上登录也可能正常登录,这需要一定的机制加以解决。
统一认证集成方案中正向代理方式和反向代理方式各有利弊,正向代理技术较反向代理技术更为成熟。在企业局域网内的可做少量改造的应用系统建议采用正向代理技术,若原系统不能改造或自身认证授权体系较复杂且存在B/S、c/s混用的系统建议采用反向代理技术进行集成。