一种基于过滤器的遗留系统安全单点登录方案计算机软件专业.doc_第1页
一种基于过滤器的遗留系统安全单点登录方案计算机软件专业.doc_第2页
一种基于过滤器的遗留系统安全单点登录方案计算机软件专业.doc_第3页
一种基于过滤器的遗留系统安全单点登录方案计算机软件专业.doc_第4页
一种基于过滤器的遗留系统安全单点登录方案计算机软件专业.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机应用与软件Computer Applications and Software一种基于过滤器的遗留系统安全单点登录方案摘要 对企业至关重要的遗留系统,是单点登录集成的重要组成部分。然而由于遗留系统开发环境变动、技术过时等原因,导致遗留系统的升级困难,传统的基于脚本的单点登录方案存在凭证传输安全风险、无法实现包含动态信息的登录、凭证同步代价高等缺陷。提出一种基于过滤器的遗留系统单点登录方案,在模拟登录和自动凭证同步过程中实现基于SAML标准的凭证安全传输,以及包含动态信息的模拟登录,最后通过具体应用的单点登录集成验证其有效性和实用性。关键词 单点登录遗留系统过滤器SAML动态登录信息中图分类号 TP3文献标识码 AA FITER-BASED SECURE SINGLE SIGN-ON SOLUTION FOR LEGACY SYSTEMSLi Fangfang1 Wang Shuai1 Xu Shuren1 Chen Yizhou21(Technology Center of Software Engineering, Institute of Software, Chinese Academy of Sciences, Beijing 100190, China)2(Information Center of Health Department of Henan Province, Zhengzhou 450003, China)Abstract Legacy systems which are critical for enterprise are important in single sign-on integrating process. However, due to changes in the development environment, outdated technology and so on, its costly to upgrade legacy systems. And single sign-on solution based on scripting has credential transmission risk, and cannot conduct dynamic login and automatic credential synchronization. This paper proposes a filter-based secure single sign-on solution for legacy systems. It includes sign-on simulation process and automatic credential synchronization process, and implements SAML based credentials secure transmission and dynamic sign-on simulation. It turns out to be effective and practical in actual SSO integration.Keywords Single sign-on Legacy Systems Filter SAML Dynamic login information计算机应用与软件90 引言 企业的遗留系统,由于需求变化、开发环境变动、缺少技术文档等原因,存在技术陈旧、系统结构混乱和维护成本高等问题,基本上不能进行修改和进化,以满足新的变化了的业务需求。单点登录是企业应用集成的手段之一,也是提升用户体验、降低安全风险的方法。遗留系统通常是对企业至关重要的系统,是应用集成的重要组成部分,因此,对遗留系统的集成是单点登录必须要解决的难题。传统的单点登录解决方案包括基于脚本的单点登录和基于访问票据的单点登录1。基于脚本的单点登录方案由于基本不对目标系统修改、成本低廉、适用性强的优势被广泛用于企业遗留系统的单点登录集成。然而,传统的基于脚本的单点登录存在凭证明文传输的盗窃风险、难以处理包含动态信息的登录、凭证同步代价高等不足。收稿日期: 2013-03-18。国家863高技术研究发展计划项目(2012AA011204),国家科技支撑计划(2012BAH05F02),国家973重点基础研究发展计划(2009CB320704),国家自然科学基金项目(61170074)。李芳芳,硕士生,主研领域:网络分布计算,软件工程。王帅,助理研究员。许舒人,副研究员。陈益洲,正高级工程师。本文将针对传统基于脚本单点登录的不足,设计了一种基于过滤器的遗留系统单点登录方案,部署人员只需要在原有应用上配置过滤器,与单点登录组件协作,即可完成一种安全可靠的单点登录,该方案具有修改代价小、适用于包含动态信息的登录、能够保证凭证安全性的优势。1 问题分析基于脚本的单点登录采用的是一种模拟登录的技术,原本由用户和浏览器完成的登录过程改由单点登录组件自动完成,即用户由鼠标或键盘触发的登录请求通过一段编写的程序(脚本)自动提交2。通过模拟登录技术,单点登录组件帮用户完成了实际的登录多个应用系统的动作,应用系统仍然保持各自的用户目录和认证系统。在这样的单点登录机制中,一个用户对应多套登录凭证,包括单点登录系统和多个应用系统的凭证,多套凭证之间的映射由单点登录组件建立和维护。典型的基于脚本的单点登录流程如图1所示。从基于脚本的单点登录流程中不难分析出,这种方法目前遇到两种问题:(1) 凭证传输的安全性登录脚本的触发是由单点登录组件完成的,它将提取出的用户登录凭证以HTML片段的方式经由客户端转发给应用系统,由于应用系统和单点登录组件之间没有任何凭证加密的协商机制,凭证以明文的方式在网络中传输,截获攻击和复制攻击风险很大。图1 基于脚本的单点登录 (2) 包含动态信息的登录目前,很多应用系统为了防止暴力破解密码、机器人自动登录等破坏系统安全的攻击,通过图片验证码技术,一次性隐藏信息验证技术等包含动态信息的登录手段来保障系统资源的安全访问。这些动态信息通常是由服务器端按一定算法生成像密码一样的一定长度的数字和字母码串。用户请求登录页时,服务器将这样的字符以图片或隐藏字段的方式发送到客户端,同时在服务器端保存动态信息的明文,用户通过手工填写或者隐藏字段的方式将动态信息与其他登录输入信息一同发送至服务器,服务器将接收的动态信息与当时保存的动态信息明文进行一致性验证4。在基于脚本的单点登录方案中,单点登录组件只能模拟生成包含永久性登录信息的登录请求,没有考虑动态信息的模拟。通过对单点登录中这两种问题的分析发现,目前业界存在一些相关技术,为以上两个问题提供了解决思路。安全断言标记语言(SAML)是一种基于XML的用于在不同的安全域交换认证和授权数据的开放标准。SAML标准中规定了三个参与方:服务提供者(SP)、身份提供者(IDP)、访问主体。作为SP的应用信任IDP提供的关于访问主体的身份认证、授权、属性信息,并依赖这些信息进行应用资源的授权和访问控制。断言包含了传输信息的内容,是SAML的核心,断言总共有三种类型:认证断言、授权断言、属性断言。其中认证断言声明在特定时间和范围内对主体完成了认证,属性断言标识主体的特性6。SAML通过定义多种不同的应用配置来满足特定应用场景的需求。Web-SSO应用配置用于Web应用环境下的单点登录,属性配置规定了应用请求用户属性时的配置7。在本文的单点登录场景下,使用SAML进行身份认证的交换和凭证的传输是一种可行的方法。针对包含动态信息的登录问题,Web过滤器技术提供了一种可能的解决角度。过滤器是一种Web应用程序组件,它使Web应用开发者能够在请求到达web资源前截取请求,进行相应处理;同理,也能够在请求资源反馈之前,截取响应进行处理,将处理后的结果反馈给客户端5。因此,过滤器为某些处理非常复杂的问题提供了很好的解决方案,尤其在用户登录和权限控制的逻辑中,过滤器的应用非常广泛。企业的遗留系统升级困难,需要一种非侵入式的单点登录的实现方案。过滤器通过Web应用的配置文件部署,无需理解和更新原有的系统代码,又可以有效的拦截所有的请求和响应,根据请求和响应的类型,完成逻辑调用和页面转向。同时,由于部署在应用内部,过滤器可以通过应用向过滤器开放的接口存取数据,有利于复杂逻辑的设计和实现。2 解决方案本文采用一种基于过滤器的单点登录方案,通过过滤器拦截和分析访问应用的请求,根据请求的类型调用相关的处理模块,引导过滤器与单点登录组件之间的协作,将凭证安全传输至过滤器,并由过滤器构造登录请求,模拟用户完成登录。该方案的基本流程如图2所示。当未登录的用户访问应用资源时,过滤器向单点登录组件请求用户身份和登录凭证,单点登录组件引导未登录的用户完成系统登录,向过滤器返回用户的身份和登录凭证,过滤器模拟产生包含登录凭证的登录请求,提交给认证模块,完成自动登录。本文定义该过程为模拟登录过程,图2中第1步至第6步说明了该过程。图2 基于过滤器的单点登录 在本文的单点登录环境中,一个用户拥有多套登录凭证,为了支持模拟登录,用户的多套登录凭证是存储在单点登录组件的凭证库中的,这样就需要提前建立单点登录系统账户与应用账户之间的关联,存储应用的登录凭证。本文在应用上配置过滤器,能够方便地拦截用户请求,获得用户登录时提交的信息。在基于过滤器的单点登录方案中,过滤器可以通过采集用户的登录凭证并传输至单点登录组件,完成应用的单点登录配置和凭证的存储。在图2中,当单点登录组件的凭证库中没有用户的登录凭证或者登录凭证不正确时,模拟登录将会失败。这时,过滤器引导用户进行应用的本地登录,本地登录过程中,过滤器采集用户的登录凭证,将登录凭证以安全的方式传输给单点登录组件,存储到凭证库中,本文定义该过程为自动凭证同步过程,图2中第7步(包括7.1和7.2)至第9步说明了该过程。以上简要描述了基于过滤器的单点登录方案的基本流程。为支持流程的实施,下文将对方案进行整体框架的设计,并对过滤器和单点登录组件进行模块划分和定义,如图3所示。图3 解决方案的基本框架 其中过滤器包含四个核心模块: SAML安全传输模块,负责过滤器与单点登录组件之间SAML信息的安全传输。包括认证请求的产生,认证响应的解析以及包含凭证的SAML消息的传输等功能。 动态模拟登录模块,负责包含动态信息的模拟登录相关功能,从SAML安全传输模块获取凭证,构造包含动态信息的登录请求,提交给认证模块进行登录处理。 凭证采集与处理模块,当用户模拟登录失败时,引导用户登录应用,获取用户的登录输入信息,对于登录成功的用户,处理登录输入信息,产生凭证并交由SAML安全传输模块完成凭证同步。 登录控制模块,负责管理应用的登录状态,并据此调用相关模块完成进一步处理。单点登录组件包含三个核心模块: SAML安全传输模块,与过滤器的SAML安全传输模块协作完成单点登录组件与应用之间信息的安全传输。具有认证请求的解析,认证响应的产生以及包含凭证的SAML消息的解析等功能。 单点登录服务,负责两方面的功能:第一,从SAML安全传输模块获取身份认证请求,根据认证环境引导用户进行系统登录,从凭证管理模块提取用户的登录凭证,请求SAML安全传输模块产生符合认证结果的认证响应。第二,从SAML安全传输模块获取过滤器传来的凭证,调用凭证管理模块存储凭证。 凭证管理模块,支持单点登录服务的凭证获取和凭证存储。以上对基于过滤器的单点登录流程做了分析和设计,在此基础上设计了方案的整体框架,从宏观上给出了问题的解决方案。以下将对方案中的关键技术,即如何保证凭证在复杂的网络环境中安全地传输,以及如何利用过滤器技术模拟包含动态信息的登录做详细的阐述。3 关键技术3.1 凭证安全传输机制在本文提出的方案中,改进了原本由单点登录组件触发登录脚本执行的机制,由过滤器在应用端触发模拟登录,这样就需要单点登录组件以安全的方式将用户的登录凭证传输给过滤器。同时,当用户尚未进行单点登录配置或者单点登录配置失效时,过滤器将采集用户的登录凭证,以安全的方式传输给单点登录组件。可以看出,凭证的安全传输是保证单点登录方案安全性需要考虑的重要因素,本文将采用SAML标准完成凭证的安全传输。在模拟登录流程中,应用发起认证请求后由单点登录组件对用户进行认证,根据认证结果返回认证响应,是典型的SAML的Web-SSO应用场景。在认证响应中,除了包含必要的表明身份认证结果的认证断言外,SAML标准允许SP与IDP协商传输认证用户的属性。因此,本文将登录凭证作为协商的用户属性,通过属性断言的方式,与认证断言一起传输给应用的过滤器。而当模拟登录失败,进行凭证自动同步时,单点登录组件需要应用采集的最新凭证完成账户的关联,应用把采集的凭证通过属性断言的方式传输给单点登录组件。此时单点登录组件是用户属性的请求者,应用是属性的提供者。这是SAML标准中属性配置的应用场景。下文将主要阐述模拟登录中身份认证请求和响应中协议消息的传输过程,包含身份请求过程和身份与凭证响应过程两步,如图4所示。图4 SAML协议消息传输过程在身份请求过程中,作为服务请求者(SP)的应用的产生身份请求消息,其处理过程为:对于未登录的用户,登录控制模块请求SAML安全传输模块产生身份认证请求消息,产生身份认证请求消息后,进行消息签名等安全处理,进一步绑定传输协议,传输消息给单点登录组件。作为身份提供者的(IDP)的单点登录组件接收消息,通过与传输协议解绑定,进行验证签名、检查重放攻击、消息即时性检验等安全处理后,进行请求的解析,进一步交给单点登录服务,由单点登录服务获得用户的认证结果,调用凭证管理模块获得用户在应用上的登录凭证。在身份与凭证响应过程中,单点登录组件负责产生响应并传输给应用。单点登录服务获得用户的认证结果,凭证管理模块获得用户的登录凭证,共同交给SAML安全传输模块,产生断言(其中需要对用户的登录凭证加密),将断言包装成SAML响应,完成签名、加密等安全处理后,与传输协议(通常是HTTPS)绑定,通过安全传输协议传输至应用,应用通过解绑定、验证签名、验证重放攻击等步骤,获得可靠的响应,对消息进行解析,获得断言,进一步对断言进行解析(其中需要对属性断言进行解密),获得认证结果和登录凭证,交由动态模拟登录模块进行下一步处理。为了支持应用和单点登录组件的SAML交互,需要对两者进行元数据配置,即通过XML配置文件的方式,对实体ID、元数据有效期、是否需要签名的断言、证书与密钥、标识符格式、绑定支持和端点等进行配置,进而通过元数据的交换支持协议消息的传输。3.2 支持动态信息的模拟登录机制在包含动态信息的登录流程中,动态信息会在浏览器请求登录页的过程中产生,并且存储在服务器。模拟登录过程中,由于不再请求登录页,而是直接提交用户名和密码,因此服务器无法生成动态信息,当然模拟的登录请求也不包含动态信息,导致应用对动态信息的验证失败。为了实现包含动态信息的模拟登录,方案应该处理两个关键问题,即动态信息的识别和动态信息的模拟。 动态信息的识别。自动凭证同步过程中,当过滤器采集到用户的登录信息后,需要区分永久性的登录信息和动态登录信息,并作为凭证的不同组成部分同步到单点登录组件的凭证库中,用于模拟登录。 动态信息的模拟。模拟登录过程中,根据从单点登录组件获取的凭证,相关模块模拟生成动态信息,并将其包含在登录请求当中,同时将动态信息的值存储在服务器端,以便验证。为了完成动态信息的识别,本文将在本地登录和采集凭证(图2中的第7.1和7.2步)的过程中,借助用户的输入,完成动态信息的识别,并在凭证中将其与永久性的登录信息区分表示。这样,在模拟登录过程中(图2中的第6步),通过构造包含动态信息的登录请求,完成模拟登录。因此,动态模拟登录机制包含支持动态信息识别的凭证采集方法和动态登录请求的构造与提交方法两部分。为了更清晰地说明动态模拟登录机制,下文将首先对登录凭证进行定义。(1) 登录凭证的定义在一般的Web应用中,登录凭证通常包含用户名、密码等用户的静态私密信息,也就是一些键值对组成的数据集合,一个键值对表示登录用户的一项信息,称为数据项。在本文中,动态信息和静态信息需要进行不同的处理,因此,对于用户的一项信息,在键值对的基础上增加数据项类型的定义。本文约定X=A+B表示信息X由信息A和信息B组成,X = A|B表示X取A值或B值,X=n * A表示X由n项A信息组成。据此定义数据项类型、数据项、登录凭证如下: 数据项类型 = 静态类(Perm) | 动态类(temp) 数据项 = 数据项名+数据项值+数据项类型 登录凭证 = n*数据项其中,静态数据项指登录时输入的用户名/密码等永久性的信息,其数据项名值可以通过过滤器的凭证采集和处理模块获取,动态数据项指一次性的登录信息,其数据项名可以通过该模块得到,数据项值需要在登录时采用一定的机制进行模拟。(2) 支持动态信息识别的凭证采集当过滤器无法从SAML安全传输模块获得用户的登录凭证或者登录凭证错误时,将触发本地的用户登录和凭证采集。对于用户提交的登录请求,过滤器可以通过web应用服务器的接口获得输入的信息,也就是一些键值对组成的数据集合,如何区分其中的静态数据项和动态数据项是本部分的重点。本文采用的方案是引导用户两次输入登录信息,通过对比输入的信息区分动态信息和静态信息。当用户提交第一次登录请求后,过滤器收集用户的输入信息,提交认证模块认证并记录认证响应。过滤器模拟浏览器再次请求登录页,用户第二次提交登录请求后,过滤器继续采集输入信息,并让请求通过。认证模块完成身份认证后,对两次的认证响应进行分析,对于两次都认证成功的响应,产生用户的登录凭证。图5是本地登录和凭证采集的流程图。图5 本地登录和凭证采集流程产生登录凭证的关键步骤是对比两次收集的用户输入信息,确定各数据项的类型。用户的输入信息采用键值的方式存储,通过对比两次输入数据项的名值的异同得到其类型,进而产生登录凭证。登录凭证的产生过程如图6所示。图6包含动态数据项的登录凭证的产生(3) 动态登录请求的构造与提交从单点登录组件获取到用户在应用上的登录凭证后,需要采用的一定的机制模拟产生手动登录时的动态信息。图7显示了从SAML属性断言中获得用户的登录凭证之后的动态模拟登录过程。图7 动态模拟登录其中动态信息产生逻辑和动态信息存取接口是原有应用的模块或接口,本地登录过程借助其完成包含动态信息登录页面的产生和登录请求的验证,方案假定二者以可调用的接口方式向过滤器开放。当需要模拟登录时,首先调用动态信息产生逻辑产生模拟登录所需的动态信息,并将其通过动态信息存取接口存储到服务器中(之后的认证模块的认证将需要从中获得动态信息),构造包含动态信息的登录请求,并提交到应用的认证模块,这样,认证模块即可根据提交的登录请求中包含的登录凭证完成用户身份的认证。由于登录请求的提交不再经过复杂的网络环境,本文将采用Get方式构造登录请求,将凭证的各个数据项作为登录处理URL的参数,提交给认证模块。这种构造方式简便实用,请求的转发在应用服务器内部完成,无安全隐患。图8描述了从SAML属性断言中获取的凭证,通过动态信息产生逻辑获得其动态数据项的值,并以Get方式产生登录请求,将请求提交给认证模块的过程。图8 构造动态登录请求4 方案验证本节将以一个具体应用OncePortal门户中间件14的单点登录集成来验证方案的有效性。在单点登录之前需要进行SAML元数据配置和动态信息相关接口的配置。第一,在单点登录组件上进行SAML元数据配置。指定元数据网络获取地址:http:/localhost:8080/OncePortal/portal/md。在应用上进行SAML元数据配置,指定单点登录组件的元数据的网络地址: http:/authdefault:/authrun/metadata。第二,在过滤器的配置文件中指定动态信息产生逻辑和动态信息存取接口。TempProduceLogic=/imageGet.jsTempStorage=Session; TempStorageDetail=imageValue(1) 凭证安全传输的验证通过浏览器插件HttpWatch可以观察到,基于脚本的单点登录将用户的凭证包含在HTML片段中传输至应用,如图9所示。图9 基于脚本的单点登录包含凭证的HTML片段本方案采用SAML的属性(Attribute)元素传输凭证,并且通过对属性元素的加密,即EncryptedAttribute元素对属性内容加密传输,为了方便查看,图10显示未加密之前包含凭证的消息片段。其中属性名为凭证(credential),属性值为凭证的内容。图10 基于过滤器的单点登录包含凭证的消息片段(2) 包含动态信息的模拟登录验证OncePortal的登录页面包含图片验证码的填写,即动态信息的输入和验证,如图11所示。使用本文中的方案,可以完成对该应用的单点登录。当用户在单点登录组件完成登录后,可以跳转至OncePortal,当OncePortal的单点登录过滤器替用户完成模拟登录后,即可访问OncePortal应用,其中模拟登录的过程对用户透明。图11 单点登录应用集成举例5 相关工作目前,针对遗留系统的单点登录集成问题存在一些相关的研究,业界也存在一些相关的解决方案。从部署方式来看,目前存在三种类型的解决方案。第一,免部署方式。传统基于脚本的单点登录即采用此种方式,存在多种缺陷(前文已述)。第二,通过在应用端配置过滤器。文献11提出一种基于过滤器的单点登录,通过应用端的过滤器获取登录凭证完成口令的代填,以及获取用户的输入信息完成凭证的同步,但与本文的方案对比,该方案无法完成包含动态信息的模拟登录。第三,通过在客户端安装控件。文献13通过在用户的浏览器上安装控件,采用代理的方式实现跨域单点登录的口令同步,进而完成单点登录。本文采用第二种方式,无需每个用户在浏览器上安装控件,增强了可控性。配置过滤器是一种非侵入式的应用升级方式,适用性强。通过SAML完成凭证的安全传输也存在一些相关研究。文献12提出一种介于真单点登录和伪单点登录的方案,通过SAML传递身份映射信息,与本文的方案相比,流程定义相对复杂。文献11中的单点登录方案也采用SAML完成凭证的安全传输,该文献只提出了可以使用该方法传输,并未说明如何传输。本文详细的说明了如何通过SAML保证凭证安全传输,包括消息加密、签名、验证、与安全协议绑定传输等。针对包含动态信息的模拟登录,目前尚未出现相关的研究成果。本文针对应用中大量出现的包含动态信息的登录验证方式,提出了改进的方案。与其他方案相比,能够支持包含动态信息的登录是本方案的最大优势。6 结语企业遗留系统的单点登录集成是一个难题,使用基于脚本的单点登录技术存在凭证传输的安全风险、凭证同步成本高、无法模拟包含动态信息的登录等缺点。本文提出一种基于过滤器的单点登录方案,设计实现了符合SAML标准的服务保证凭证的安全传输,通过分析包含动态信息登录的特点,设计了支持动态信息的模拟登录机制。最后通过实例验证了方案的有效性,说明其在部署、处理包含动态信息的登录、凭证安全传输等方面的优势。参考文献 1 林满山, 郭荷清. 单点登录技术的现状及发展J. 计算机应用, 2004, 24(z1): 248-250.2 Parker, T. A. Single sign-on systems-the technologies and the productsC. Security and Detection, 1995. European Convention on, 1995: 151-155.3 李相育, 钱宇, 李秀喜. 基于Web服务的流程工业遗留系统的信息集成J. 计算机集成制造系统, 2005, 11(10): 1387-1391. 4 韩玉民. 验证码技术研究及基于ASP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论