当前位置: 首页 > news >正文

构建基于分布式SOA架构的统一身份认证体系

摘要:本文充分利用SOA架构松耦合的特点,通过规范统一网络接口实现业务系统整合,既提升系统安全性,又简化资源访问操作,具有重要的理论和现实意义。

    统一身份认证旨在将分散在各个信息系统中的用户和权限资源进行统一集中管理,提升系统安全性,简化资源访问操作。各家金融机构的业务系统由于开发时期不同,支撑技术各不相同,系统环境彼此独立,统一身份认证体系需要面对跨平台、跨系统的巨大挑战。近年来,面向服务架构SOA(Service Oriented Architecture)技术为松散集成业务系统的统一身份认证体系构建创造了非常有利的条件。SOA通过业务需求将粗粒度的服务(应用组件)进行松散耦合,服务直接通过独立于硬件平台,操作系统和程序语言的接口或契约相互联系。构建基于SOA架构的统一身份认证体系为数据集中后业务系统身份认证难题提供了可行的解决方案。


    1、目标与原则


    系统建设目标为:以现有的不同时期的业务系统为服务对象,构建基于SOA架构,具有较强跨平台、跨系统的异构集成能力,能够提供集中统一、安全可靠身份认证服务的统一身份认证体系。


    系统设计原则有以下三点:


    1.安全原则。统一身份认证系统的安全措施必须从全局角度考虑,用户和权限信息并不只属于单个业务系统,而是涉及所有参与集中的业务系统,所以统一身份认证系统的安全等级应等同于所有参与集中的安全级别最高的业务系统。


    2.稳定原则。统一身份认证系统能否稳定运行直接影响所有参与集中的业务系统是否能够正常使用。因此,统一身份认证系统应当具有高可用性,能够提供持续稳定的服务。通常,具有高可用性的系统至少应具备数据热备,双机热备等基本功能。


    3.开放原则。统一身份认证系统需要跨越不同时期开发的业务系统,适应不同操作系统、程序语言,提供统一的身扮认证服务。这就要求统一身份认证系统具有非常强的开放性,能够提供适应不同业务系统的接入环境。


    2、用户和权限统一管理


    统一身份认证系统的主要特点就是用户和权限的统一标识、统一管理和统一认证。目录服务器是统一身份认证系统的核心,其通过部署轻量级的目录服务协议(Light weight Directory Access Protocol,LDAP)的基础软件,如在金融界广泛使用的IBM Tivoli Directory Server,对外提供基于LDAP的目录服务。LDAP之所以适用于金融机构用户和权限的管理,是因为它能将业务系统用户和权限信息以层次结构、面向对象的方式进行存储,非常适合查询而非读或更新。LDAP的这一性能非常契合金融机构业务系统用户相对稳定而登陆频繁的特点。

    所有业务系统的用户和权限信息都由目录服务器来提供统一维护服务,相比功能单一的紧耦合用户认证方式,其为业务系统提供三种接入方式:Web Service接口、LDAP接口和数据库接口。通过绑定Web Service和LDAP接口,业务系统可以直接获得目录服务器对用户和权限信息的反馈,同时统一身份认证系统使用以上接口通过绑定关联帐户的方式实现业务系统间的互信,即金融机构内或金融机构间不同业务系统的互信和互通。


    3、分布式SOA架构应用系统集中


    数据集中需要业务系统集中作为支持,业务系统的集中不仅是物理服务器的集中,更是系统数据流的集中。如何将功能不同的业务系统进行有效整合,做到统一认证,统一管理,是统一身份认证系统核心关键技术之一。


    基于SOA架构松耦合的理念,银行业务系统的集中并不需要对已有系统的大规模改造整合,而是由SOA网络规范统一网络接口,如图1所示。银行业务系统只需实现对规范接口的有效支持,从SOA网络的角度,业务系统即抽象为服务。目录服务器提供的基于LDAP的服务本身也在分布式SOA网络中抽象为身份认证服务,任何业务系统需要使用身份认证时,就如同调用内部服务一样调用SOA网络提供的服务接口,获得身份认证服务。


    与传统身份认证服务相比,基于分布式SOA架构的统一身份认证克服了用户数据冗余,它将分散在业务系统中的用户数据进行了集中管理,不但提高了数据安全性,同时也解决了大量分散用户数据维护难的问题。同时,作为一项SOA网络服务的统一身份认证系统,其摆脱了具体业务系统的硬件平台、软件环境的束缚,能够非常友善的所有符合接口标准的新进业务系统,减轻后续业务系统身份认证模块的设计和开发工作。


[page]    4、基于分布式SOA架构的统一身份认证体系的实现


    基于分布式s0A架构的统一身份认证体系包括统一身份认证系统,相关集群环境、网络环境与硬件设备。统一身份认证系统功能图如图2所示,其至少需包含认证模块、授权模块、查询模块和系统服务模块。这四个模块是完整统一身份认证系统的最小组成,其他模块如保密通讯模块等可根据实际需求选择性添加。认证模块基于包含用户身份和权限的数据库和LDAP服务器,业务系统通过LDAP或Web Service接口实现待核查用户信息的提交,认证模块经目录模型检索,并通过数据库接口将用户信息进入数据库查询,将返回用户身份进行权限解释,最终反馈给请求提起的业务系统。

    授权模块的主要功能在于分配用户权限,包括通过初始化权限产生新用户,基于分级授权的权限分配,及多业务系统间同用户不同ID的权限映射。授权模块作为所有业务系统权利分配的中心,其通过多级管理加强系统安全。与业务系统角色分类方式不同,分为超级管理员,应用系统权限管理员,监督管理员。超级管理员分配应用系统权限管理员,应用系统权限管理员为普通用户。


    查询模块主要功能为查找特定用户,相同权限用户的汇总和所有用户权限变更查询。


    系统服务模块只对超级管理员开放,提供统一身份认证系统与数据库和其他业务系统的连接配置,系统日志管理和维护,系统备份信息管理等服务。


    一般业务系统根据角色分类,应包含以下几类用户:系统管理员,业务操作员,运维人员,审查监督员和普通用户。大部分业务系统的用户都应使用与外部因特网物理隔绝的内联网访问业务系统服务器,对于少数需要外联的业务系统,则需要在另设防火墙和代理服务器。


    基于分布式SOA架构的统一身份认证体系建议部署架构如图3所示。用户通过受到严格监管的终端设备接入内联网,路由器和交换机通过链路冗余保证线路可靠性,防火墙提供必要的安全防护。

    Browser/Server架构(BIS架构)逐渐取代Client/Server架构(C/S架构),业务系统的访问均需通过Web服务器提供Web访问支持。在防火墙后端,基于分布式SOA架构的统一身份认证体系需要建立一组Web服务器集群,为业务系统和身份统一认证系统提供负载均衡,减少因单点故障引起的访问中断。可以选择的Web服务器商业软件非常多,如IIS,Weblogic,Tomcat,IHS等。在选择合适的Web服务器软件时应注意两点:一是尽量选迁移容易,跨平台能力强的Web服务器软件。因为服务器的更新换代必然带来Web服务器的迁移,而从实践中看,Web服务器跨平台换代的可能性较应用服务器大很多,所以易跨平台迁移的Web服务器软件能为系统更新升级带来极大的便利。二是与应用服务器的兼容性。如果应用服务器使用了IBM的小型机,那么选择IHS作为Web服务器软件就比选择IIS明智的多。选择同一厂商的软硬环境不但在兼容性上有明显优势,而且若发生运行故障也能获得较为完整的技术支持。


    应用服务器是基于分布式SOA架构的统一身份认证体系的核心,也是业务系统的关键部件。应用服务器上不但部署了统一身份认证系统,也部署了业务系统。事实上,前者可视为一项提供对内服务的“业务系统”。应用服务器位于防火墙后端,使用集群的方式进行联结,且与Web服务器集群通过以太网互联。应用服务器集群是SOA架构承载平台,所有松耦合的业务系统均部署在集群中,使用主从方式、双机双工方式或多服务器互备方式运行,获得系统的高可用性。同时,应用服务器集群与Web服务器集群、防火墙的连接也使用了链路冗余,保证银行业务系统和统一身份认证系统的连通性。


    数据库服务器集群为应用服务器集群提供数据存储服务,其位于应用服务器集群的后端,使用Network File System方式访问。基于分布式SOA架构的统一身份认证体系的存储网络架构采用Storage Area Network(SAN),将不经常访问的数据存放在离线存储设备上,如磁带库;将需要快速传输或经常访问的数据存放在在线存储设备上,如磁盘阵列。值得注意的是,统一身份认证系统与其他业务系统公用SAN存储网络,它将存储设备和数据库服务器用光纤连接起来,通过多个光纤交换机提供的链路冗余,组件成一个可靠的光纤通道网络。它的支持技术是Fibre Charmer协议(FC)。采用SAN可以使得数据的实际备份和存储独立与数据库逻辑请求之外,即很大程度上消除了因存储设备I/O速率与系统运行速度不匹配带来的瓶颈效应。


    5、小结


    构建基于分布式SOA架构的统一身份认证体系于金融业业务系统大集中的背景下提出,在身份认证集中化、信息化等方面作了一定的探索和研究,在实际使用也展现了良好的应用前景。统一身份认证将是大势所趋,各金融机构不应只拘泥于机构内部的身份统一,在机构间建立基于安全可靠的信任关系,能够为加强经济信息互通互联,促进金融发展带来前所未有的机遇。

转载于:https://www.cnblogs.com/dassmeta/p/6483540.html

相关文章:

  • 傻瓜式Linux之三:安装软件
  • Python 3.5 socket OSError: [Errno 101] Network is unreachable
  • 华章1-2月份新书简介(2017年)
  • 专业网站打包/解包asp工具(E文精装版本)!
  • 【健康医疗】4步完成数据分析报表,让医疗数据转化为生产力
  • ORACLE查找并解除死锁进程
  • 云计算那些事
  • 推荐几本书给大家
  • javascript中this的用法
  • Foxmail邮件发不出去,都是Mcafee惹得祸
  • 百度编辑器 UEditor setContent()
  • 磨刀不误砍柴工
  • 关于statsd timer的几个指标
  • 独家调查:试解西安深度培训的7个悬疑(中)
  • 使用LVS+keepalived实现mysql负载均衡的实践和总结
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [译] React v16.8: 含有Hooks的版本
  • ECS应用管理最佳实践
  • java8-模拟hadoop
  • java中的hashCode
  • JS笔记四:作用域、变量(函数)提升
  • Js基础知识(一) - 变量
  • Laravel 菜鸟晋级之路
  • MySQL-事务管理(基础)
  • Phpstorm怎样批量删除空行?
  • Python学习之路16-使用API
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 包装类对象
  • 从重复到重用
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 力扣(LeetCode)965
  • 盘点那些不知名却常用的 Git 操作
  • 前嗅ForeSpider教程:创建模板
  • 数据可视化之 Sankey 桑基图的实现
  • 微信小程序设置上一页数据
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 一天一个设计模式之JS实现——适配器模式
  • ​马来语翻译中文去哪比较好?
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (arch)linux 转换文件编码格式
  • (C++17) optional的使用
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (一)插入排序
  • ./configure,make,make install的作用
  • .gitignore文件---让git自动忽略指定文件
  • .NET 4.0中的泛型协变和反变
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET/C# 使用反射注册事件
  • ?php echo ?,?php echo Hello world!;?
  • @Autowired 与@Resource的区别
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ C++ ] STL---stack与queue
  • [ IO.File ] FileSystemWatcher
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题