构建基于分布式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架构的统一身份认证体系于金融业业务系统大集中的背景下提出,在身份认证集中化、信息化等方面作了一定的探索和研究,在实际使用也展现了良好的应用前景。统一身份认证将是大势所趋,各金融机构不应只拘泥于机构内部的身份统一,在机构间建立基于安全可靠的信任关系,能够为加强经济信息互通互联,促进金融发展带来前所未有的机遇。
构建基于分布式SOA架构的统一身份认证体系的更多相关文章
- 基于DDD + SD.Framework实现的统一身份认证系统
项目地址 http://git.oschina.net/lishilei0523/ShSoft.UAC 项目说明 本项目开发的目的有三: 1.作为一个使用SD.Framework框架开发的项目样板 2 ...
- JEECG 集成KiSSO单点登录实现统一身份认证
JEECG 集成KiSSO单点登录实现统一身份认证 JEECG 如何为其他第三方系统实现统一身份认证服务,实现单点登录? 第三方系统如何对接呢? 今天为大家揭开这层面纱,让大家了解实质,使用它更快速的 ...
- 【.NET Core微服务实战-统一身份认证】开篇及目录索引
简介 学习.NETCORE也有1年多时间了,发现.NETCORE项目实战系列教程很少,都是介绍开源项目或基础教程,对于那些观望的朋友不能形成很好的学习思路,遇到问题怕无法得到解决而不敢再实际项目中 ...
- ASP.NET WebApi 基于分布式Session方式实现Token签名认证
一.课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NETWebSer ...
- ASP.NET WebApi 基于分布式Session方式实现Token签名认证(发布版)
一.课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NETWebSer ...
- 中国科学技术大学统一身份认证系统CAS
CAS | Apereohttps://www.apereo.org/projects/cas 中国科学技术大学统一身份认证系统https://passport.ustc.edu.cn/login?s ...
- 记录使用Python登录浙江大学统一身份认证
背景 现在每天要进行健康情况上报,但是因为经常睡过头忘记打卡,于是想着写一个程序来自动打卡. 统一身份认证 访问健康情况上报页面(https://healthreport.zju.edu.cn/nco ...
- Shiro01 功能点框图、架构图、身份认证逻辑、身份认证代码实现
基本功能点 功能点框图 功能点说明 1.Authentication:身份认证/登录,验证用户是不是拥有相应的身份: 2.Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个 ...
- 基于FormsAuthentication的用户、角色身份认证
一般情况下,在我们做访问权限管理的时候,会把用户的正确登录后的基本信息保存在Session中,以后用户每次请求页面或接口数据的时候,拿到 Session中存储的用户基本信息,查看比较他有没有登录和能否 ...
随机推荐
- java多线程(三)之售票案例
售票案例: 火车站3个窗口售100张票. 1.自定义类SellTicket.java package com.test.com.pers.thread; /** * Created by yadong ...
- redis安装配置文件配置
环境: 虚拟机redhat5.5安装redis4.0.2 虚拟机IP:192.168.60.130 reids端口:6379 安装步骤不详述了(可参考: 亲密接触Redis-第一天), 大致步骤如下: ...
- 【LeetCode】45. Jump Game II
Jump Game II Given an array of non-negative integers, you are initially positioned at the first inde ...
- shell脚本条件判断
http://blog.csdn.net/ws_zll/article/details/7515310
- linux文件系统管理的工作原理
一.系统在初始化时如何识别硬盘 1.系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,而后面的16 ...
- explore your hadoop data and get real-time results
deep api integration makes getting value from your big data easy 深度api集成使你大数据訪问更加easy Elasticsearch ...
- vue v-model 与 组件化的表单组件如何沟通
参考mint-ui的代码: https://github.com/ElemeFE/mint-ui/blob/master/packages/radio/src/radio.vue https://gi ...
- C 多级指针
C多级指针 *p -----> &p1 *(*p) ----->*(&p1) = &p ...
- PHP函数之类
if(isset($_POST['dosubmit'])) { } 打散 $array_urls = explode("\r\n",$inurl_str); foreach ($a ...
- 配置 logrotate 指导
一般来说,日志是任何故障排除过程中非常重要的一部分,但这些日志会随着时间增长.在这种情况下,我们需要手动执行日志清理以回收空间,这是一件繁琐的管理任务.为了解决这个问题,我们可以在 Linux 中配置 ...