基于SOA服务模式的单点登录解决方案

实战单点登录的两种实现方式,附源码 单点登录(Single Sign-On,SSO)是一种身份验证服务,允许用户使用单个标识来登录多个应用程序或系统。如下图所示,用户只需要登陆一次就可以访问系统A、系统B和系统C。在传统的登录方式中,用户必须为每个应用程序或系统提供不同的凭据和密码。如下图所示,用户访问系统A、系统B和系统C都必须用登陆。这种方式既不方便也容易被攻击者利用,而 SSO 解决了这个问题,使得用户只需通过一次身份验证就可以无缝地访问多个应用程序或系统,从而提高了用户体验的便利性和安全性。 阅读详情

 

 

摘要

本文档通过一个基于标准的SOA服务的单点登录信息综合管理平台的开发,解决了分布式系统间的用户认证、权限验证、session超时、单点登出等问题,体现了SOA服务开发面向业务、粗粒度、松耦合方面的特点。

关键字

SSOSCA/SDO标准、SOA服务、单点登录、用户认证、权限验证、EOS6

定义、首字母缩写词及缩略语

SSOSingle Sign-On单点登录

EOSPrimeton EOSTM6.0,普元公司的面向构件的SOA平台

1.1    介绍

在分布式系统中如何实现单点登录和权限验证是很多企业在信息化建设过程中普遍都会遇到的问题。对这个问题,业界也提出了很多的解决方案,比如WebLogicWebSphere都提供了容器级的方案, Yale大学的CAS (Central Authentication Service)这样的开源的解决方案,还有很多企业开发了适用本企业的解决方案。但这些解决方案,都有一个共同弱点,就是用户认证和权限验证不能很好结合,基本上分开解决,单点登录只解决用户认证问题,权限验证都交给各个业务应用独立进行。

SOA成为大势所趋的今天,把用户认证和权限验证包装成SOA服务,在分布式系统中采用SOA服务来认证用户信息,验证用户权限的方案,很好的解决单点登录的认证和权限验证问题。而且基于SOA的单点登录在支持系统松耦合,系统扩展性,灵活性方面都有很大的好处。笔者有幸参加某银行的信息综合管理平台的建设,采用普元公司面向构件的SOA开发平台EOS,很方便的实现基于SCA/SDO标准的SOA服务,实现分布式系统的单点登录和权限验证。

1.2    系统框架

按照规划,信息综合管理平台将为所有的MIS业务应用提供用户认证、权限验证等服务。用户信息、权限信息集中在信息综合平台维护。信息综合管理平台和MIS业务应用可以自由地部署到一台或多台硬件设备,分别有自己独立的数据库。它们的部署图如下:

 

1:系统部署图

对用户而言,信息综合管理平台和业务应用是一个整体。信息综合管理系统需要支持用户单点登录,即用户在客户端要访问业务应用,需要先在信息综合管理系统进行用户登录,登录成功后,用户再访问业务应用时,业务应用判断客户是否有权限访问。如果有权限,则业务应用执行业务逻辑,返回结果给客户。

业务应用权限的信息在信息综合管理平台统一维护,这样有利于集中管理。业务应用能够根据信息综合平台的授权信息进行权限验证。

所以,我们需要在统一用户组织机构、权限管理的基础上,实现信息综合管理平台与各个MIS业务应用的单点登录机制和权限验证机制。

1.3    单点登录机制原理

单点登录主要解决三个问题:单点登录、session超时、单点登出。根据EOS平台的SOA开发方法,从业务问题出发,抽取成服务来解决问题。我们可以用用户认证服务提供单点登录,登出服务提供单点登出功能。用户认证服务由信息综合管理平台提供,登出服务由MIS业务应用提供。

在分布式应用单点登陆处理中,session超时处理都是比较困难的。采用认证服务来处理用户认证方式后,这个问题处理显得很简单。

session超时,如果是业务应用的session超时,则可以通过重新调用信息综合管理平台认证服务来验证用户信息;如果是信息综合管理平台session超时,则需要重新登录。在重新调用认证服务时,客户端通过cookie得到用户的唯一识别号和用户ID,传给认证服务,认证服务可以根据用户识别号是否有效以及和用户ID是否匹配,来决定验证是否通过。

1.3.1   用户认证过程

3 访问业务应用

2 用户认证

用户客户端

1 登陆

5 认证结果返回

4 调用服务,认证用户信息

信息综合管理系统

认证服务

6  应用创建session

2:单点登录的原理图

 

1.         用户在信息综合管理系统的登录页面中,输入用户名和密码。

2.         信息综合管理系统会对用户名和密码进行认证。认证机制可以有很多种,例如自己写一个认证程序,或者使用一些标准的认证方法,例如LDAP或者数据库等等。在大多数情况下,会使用LDAP进行认证。这是因为LDAP在处理用户登录方面,有很多独特的优势。

3.         认证通过之后, 信息综合管理平台会创建用户的session,产生用户唯一标识TICKETID

用户第一次访问应用时候,信息综合管理平台把用户的userIDTICKETID传给业务应用。

4.         业务应用通过单点登录代理SSO Filter拦截用户访问请求,检查业务应用中用户的session中是否有用户信息,如userIDTICKETID。如果有,说明用户已经不是第一次访问业务应用,把请求转到结束。如果session中没有用户信息,则请求信息综合管理平台的认证服务,并传送用户userID,本应用代码appCode,用户唯一识别号TICKETID

5.         信息综合管理平台的认证服务根据userIDTICKETID判断用户是否在信息综合管理平台通过认证。如果用户已经通过认证,则返回用户的相关信息,如用户角色,用户组,用户职务,用户岗位,用户机构。信息综合管理平台记录用户的userIDappCode信息供用户注销时候使用。如果用户还没有在信息综合管理平台通过认证,则转到登录页面进行用户登录。

6.         业务应用得到认证通过的信息,创建用户的session,初始化用户session,在session存放用户的相关信息。以后再有用户请求访问业务应用,业务应用就不用再请求信息综合管理平台的认证服务。

 

   为了保证系统安全,在信息综合管理平台和业务应用间传递的用户名和TICKET用密文传送,即信息综合管理平台把信息用公共的密钥加密,业务应用收到密文,采用和信息综合管理平台公共的密钥把密文解开得到信息。

 

1.3.2   用户注销过程

用户需要登出系统时,在信息综合管理平台选择的注销功能,开始注销过程:

1.         首先在信息综合管理平台从用户session中得到用户曾经访问的业务应用代码即appCode

2.         根据业务应用代码对用户已经认证的应用,循环调用各个业务应用的登出服务。

3.         业务应用在收到服务调用后注销该会话。

4.         循环调用各个业务应用的登出服务完成后,信息综合管理平台注销用户session

最终是用户在信息综合管理平台上的会话失效,从而使得用户在信息综合管理平台上的会话及所有参与SSO的应用上的会话均已失效,单点登出即全部完成。

业务应用

登出服务

Client

业务应用

登出服务

 

2  注销请求

 

用户客户端

1 登出

3  应用注销

4 平台注销

信息综合

管理系统

2  注销请求

3  应用注销

3:单点登出原理图

1.3.3   权限服务

在很多单点登录的解决方案中,并不提供权限验证的功能。一般权限验证都还是放在各个业务应用进行,最多只是在统一登录平台验证一下用户有没有权限进入业务应用。

我们用SOA服务来解决权限验证问题,就显得很容易。

各个业务应用在启动的时候通过调用权限信息服务从信息综合管理平台获取应用的权限角色的信息,把信息放在应用的缓存。用户单点登录成功后,用户认证服务会把用户的角色信息返回给业务应用,放在业务应用用户的session中。当用户访问业务应用资源时,通过用户session的角色信息在缓存中找到角色对应的资源权限信息,从而判断用户是否有访问业务应用资源的权限。

当信息综合管理平台的权限信息有变化,则信息综合管理平台会调用业务应用的一个更新服务来刷新业务应用的权限信息的缓存。这样就保证应用缓存的实时性。

权限服务的示意图如下:

4:权限服务的示意图

1.4    服务的架构

本解决方案中主要有用户认证服务,登出服务,权限数据服务。服务之间的调用关系如下图, EOS平台提供ESB的机制,应用把SOA服务在ESB的注册中心注册,各个应用就可以通过查找获取所需的服务。

 

 

 

5:服务总线结构图

1.5    SOA服务的实现

介绍了实现原理,我们来看一下实现的方法。在本解决方案中,我们采用普元公司的EOS平台来开发SOA服务,EOS平台提供自顶向下和自底向上两种方式来开发SOA服务。

自顶向下的开发方式就是先从业务角度出发,规划好服务,然后在实现服务的过程中构造出一个个构件,包括逻辑构件、运算构件、数据库构件等。自底向上的方式则相反,先有数据库构件,逻辑功能构件,在通过一定的组织把他们包装成服务。

在本方案中,我们用EOS自顶向下的方法来构造SOA服务。前面我们已经划分出了三个服务:认证服务;登出服务;权限验证服务。下面我们以认证服务为例子来说明服务的构建过程。

1.5.1   构件装配

我们先在EOS构建装配图中画出我们需要的服务构件,单点登录主要有两个构件装配:服务器端的认证服务(也称认证服务端)和客户端的认证服务(认证客户端)。

认证服务端是部署在信息综合管理平台。认证客户端是部署在信息综合管理平台和业务应用。认证客户端需要通过webservice方式来调用认证服务端提供的远程服务。认证服务器端的用户认证服务通过绑定webservice方式提供远程调用服务。认证客户端是提供给业务应用本地调用的服务。

认证客户端和服务端的构件采用EOS的逻辑构件来实现。

构件装配图如下:

 

                                                             6:构件装配图

1.5.1.1             认证服务器端构件信息

认证服务器端构件定义了一个远程认证的接口,输入参数是需要验证的用户信息,如用户名,密码,应用代码,已登录用户的唯一识别号。对他们的约束如下:

l         用户名和应用代码为必须有参数。

l         密码和已登录用户的唯一识别号为可选参数,两者必须要有一个。密码是用户第一次验证需要提供的,已登录用户的唯一识别号是已经验证过的用户需要提供的,一般是为了应用session超时后调用认证服务时需要提供的。

l         系统会根据参数不同进行不同校验:如果有已登录用户的唯一识别号,先进行已登录用户的唯一识别号校验,不通过时如果有密码,会进行用户名密码校验;没有已登录用户的唯一识别号时,进行用户名密码校验。

认证接口的返回参数是一个数组,包含认证是否成功,如果成功,则还包含用户的相关信息,如用户基本信息,用户组,用户岗位,用户角色,用户所属组织信息。

认证接口的参数都是符合SDO2.1标准的SDO对象,所以只要符合标准的调用,都能正常工作。

 

7:认证服务器端构件信息

1.5.1.2             认证服务端绑定成服务

   要让认证服务端能供客户端通过websevice进行调用,还需要把它绑定到webservice服务。如下图:

 

 

8:认证服务绑定图

1.5.1.3             认证客户端的构件信息

 

认证客户端是提供给业务应用本地调用的服务。认证客户器端构件定义了认证服务的接口,它的接口输入输出和认证服务端的构件是一样的。

认证客户端通过webservice绑定的方式调用了认证服务器端的引用。 如图7构件装配图所示。

业务应用通过调用认证客户端来进行用户认证。

 

 

  

9:认证客户端的构件信息

 

1.5.2 服务实现

1.5.2.1             认证服务端的服务实现

定义好服务的接口后,需要来进行服务的实现,EOS的逻辑构件服务是用构件的逻辑流来实现。

我们需要定义一个userAuth的构件实现userLoginRemote的逻辑流。逻辑流实现如下图:

 

10:认证服务实现逻辑流图

在这个逻辑流,我们主要调用了一个运算逻辑:验证TicketID(登录用户唯一标识),两个子业务逻辑流:本地认证和查询用户信息。

本地认证的业务逻辑流图如下:

 

 

11:本地认证的业务逻辑流图

 

查询用户信息的业务逻辑流图如下:

 

 

12:查询用户信息的业务逻辑流图

 

1.5.2.2             认证客户端服务的实现

认证客户端的服务主要作用就是调用认证服务端的引用,供本地的逻辑流来调用该服务。所以它的实现比较简单。它也是通过构件的逻辑流来实现的,逻辑流图如下:

 

 

 

 

13:认证客户端服务实现逻辑流图

 

1.5.3   单点登录逻辑流的实现

 服务都构件好了,现在我们通过一个单点登录的逻辑流来实现信息综合管理平台服务器端和应用客户端的登录逻辑。逻辑流图如下:

 

 

 

 

14:单点登陆逻辑流图

   逻辑流图从配置中获取是调用本地用户认证还是远程的用户认证:本地认证适用于用户访问信息综合管理平台的情况;远程认证适用于用户访问业务应用的情况,如果远程认证,则调用认证客户端的认证服务。如果是本地认证,则调用用户认证的逻辑流进行认证。

 

1.5.4   认证代理的实现

从用户单点登录原理图上,我们可以看到,在业务应用端需要有有一个单点登录的认证代理用来检查用户是否已经登录,如果没有登录则调用登录的逻辑流来实现登录。这个代理我们采用Filter来实现。它的逻辑图如下:

 

 

 

 

15:认证代理逻辑图

 

1.5.5   部署

单点登录认证服务的部署如下图。它可以实现非常灵活的登录方式,例如,通过在业务应用配置成本地认证方式,并部署本地认证的逻辑流和查询用户信息逻辑流(图中红色虚框部分),可以实现业务应用保留单独的登录入口,可以脱离信息综合管理平台独立地运行。

 

                                 图16:部署图

2       总结

在本方案中,我们采用SOA的方法来分析企业分布式系统中遇到的单点登陆问题,规划了两个重要的服务:用户认证服务和权限验证服务。用普元的EOS平台方便地构建了基于服务的单点登陆平台。这样的解决方案比其他的单点登陆解决方案在构建松耦合,易管理,符合标准的SOA服务,满足灵活多变的业务应用集成方面有显著的优点。

 

SOA(面向服务架构)是什么? 现在对SOA理解些了吗?SOA是一种面向服务的架构,基于分布式架构,它将不同业务功能按服务进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。httpshttpshttpshttps。... 阅读详情

相关推荐

基于SOA服务模式单点登录解决方案服务器

通过定义身份提供者和服务提供者的角色,并使用身份令牌进行验证,可以实现用户在多个应用程序或系统中的单一登录体验。当用户在身份提供者的登录页面中完成身份验证后,身份提供者将生成一个身份令牌,并将用户重定向回服务提供者的。服务提供者验证令牌:服务提供者接收到用户的登录请求和身份令牌后,将身份令牌发送给身份提供者进行验证。身份提供者发放令牌:如果用户的身份验证成功,身份提供者将生成一个唯一的身份令牌,并将其返回给用户。身份提供者验证令牌:身份提供者接收到服务提供者的验证请求和身份令牌后,验证身份令牌的有效性。

TpCode的博客 336

普元 sso 单点登陆集成指南

用于各个应用共享登陆用户,用户在各应用直接切换不需要重新登陆

全面解析单点登录SSO解决方案构建

SAML(Security Assertion Markup Language)是一种基于XML的开放标准,它用于在不同的安全域之间传递身份验证和授权信息。SAML票据通常用来实现SSO功能,其核心是通过声明(assertions)来传递用户的身份信息。这些声明包含用户的标识、属性以及它们的有效性信息,它们可以被安全地传输给服务提供商(SP)以验证用户的登录状态,从而实现用户在多个应用系统间无需重复登录。在上述的SAML声明中,指明了SAML声明的格式、版本以及ID,并通过和。

weixin_42596246的博客 1280

普元 EOS Platform 7.6 sso集成业务应用实现单点登录,但登录跳转到成功页面时,经常出现闪屏问题,每秒10次以上

普元 EOS Platform 7.6 sso集成业务应用实现单点登录,但登录跳转到成功页面时,经常出现闪屏问题,每秒10次以上

普元开发者乐园 1763

普元SOA相关概念

SOA:面向服务的体系结构(Service-oriented architecture)是构造分布式计算的应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其他服务。 BPS:普元业务流程平台套件Primeton BPS(Business Process Suite,简称普元流程平台)是业界第一个完全基于业务化思想实现的流程平台产品,负责对业务流程整个生命周期的管理,包括业务

Baple的专栏 2057

CAS 单点登录SOA 架构

33333333333

汝之秀 702

SOA到底应该花多少钱

        本人从2005年实施某大学数字化校园开始用到IBM 的SOA产品.当时只包括PORTAL 门户和数据集成WII.当时做的东西包括统一门户和统一数据中心.费用在100万左右.还不包括集成公司的集成开发和维护费.现在做企业的信息整合.涉及到IBM WEBSPHERE 家庭的基本上所有产品.包括PORTAL/WII/E-FORM/PROCESS SERVER/DASHBOARD甚至于硬件

mysoasoft的专栏 1137

java实现单点登录

java单点登录介绍,JWT以及CAS原理介绍以及java代码实现

qq_43910862的博客 1万+

基于SOA的电商项目分布式架构

现在互联网电商项目购物平台基本都是使用SOA分布式来作为系统主要架构。为什么有那么多的电商项目都选择SOA作为系统架构呢?这是因为电商行业的项目它存在以下特点:分布式、高并发、高可用、集群、负载均衡、海量数据、系统安全等一系列问题都需要解决,而SOA分布式架构正好能很好的解决这些问题。 下面是我之前开发过的一个电商项目,简要分享一下SOA架构开发流程,希望能够帮到大家,如有不妥,请指

青堂主的博客 3836

SSO单点登录解决方案

1 什么是单点登陆       单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。       较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务。例如财务系统为财务人员提供财务的管理、计算和报表服务;人事系统为人事部门 提供全公司人员的维

heshengfen123的专栏 1743

SSO单点登录解决方案[转载]

1 什么是单点登陆       单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。       较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务。例如财务系统为财务人员提供财务的管理、计算和报表服务;人事系统为人事部门 提供全公司人员...

一点关于java方面的知识。 183

单点登录原理

1、什么是单点登陆 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一, SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 2、单点登录的好处 使用“单点登录”整合后,只需要登录一次就可以进入多个系统,而不需要重新登录,这不仅仅带来了更好的用户体验,更重要的是降低了安全的风险和管理的消耗 在面向服务的架构中,服务和服务之间,程序和程序之间的通讯大量存在,服务...

黑马程序员广州中心的专栏 909

SOA - 国产厂商的又一个机会

IBM, BEA,Oracle又掀起新一轮的SOA热潮,让我们又见识了国外的成熟的市场推动方式。然而我们在这次SOA的大潮中又一次的发现了国内产商的身影,普元首当其冲。说句实话,我以前对普元公司没有什么好感,我觉得他们的产品不够开放,本身产品又不够完善,市场定位也不清晰。但是在我身边的一些人,一些业者越来越多的提到这个公司时,我才发现普元最近的变化。在国内软件平台的发展历史上,金蝶,东方通

woohooli的专栏 996

SOA/软件架构设计---面向服务的架构(SOA详细解释)

文章比较多,但干货慢慢,请耐心阅读 面向服务的架构 迄今为止,对于面向服务的架构(Service-Oriented Architecture,SOA)还没有一个公认的定义。许多组织从不同的角度和不同的侧面对 SOA 进行了描述,较为典型的有以下三个: (1)W3C 的定义:SOA 是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口...

zhangxiaoxiao9527的博客 11万+

面向服务的软件架构(SOA

系统架构师、软考高级、面向服务架构

犇叔的博客 1万+

面向服务的架构(Service-Oriented Architecture, SOA

在信息化社会的推动下,企业和组织对于软件应用的需求不断增加。传统的单体应用架构已难以满足快速变化的业务需求。为了提升软件系统的灵活性、可扩展性和可维护性,面向服务的架构(Service-Oriented Architecture, SOA)应运而生。SOA通过将应用程序的不同功能通过服务进行暴露,每个服务提供特定的业务功能,服务之间通过标准的接口和协议进行通信。本文将详细介绍SOA的基本概念、核心原则、优势与挑战、实现技术及其在现代企业中的应用。

cooldream2009的博客 5814

SOA(面向服务架构)全面解析

SOA(Service-Oriented Architecture,面向服务架构)是一种将应用程序功能以“服务”的形式进行模块化设计的架构风格。这些服务是独立的功能模块,它们通过定义明确的接口进行通信,并可以跨不同的平台和技术栈相互协作。在SOA中,每个服务通常代表一个独立的业务功能(如客户管理、订单处理等),能够被其他服务独立地调用和复用。SOA的目标是通过服务复用和松耦合,实现灵活性、扩展性和可维护性,便于构建复杂的企业级应用。

hello.reader 1万+
下一篇: SOA in Practice读后感(一)
frankding
博客等级 码龄20年 1粉丝 3原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值