一种采用中间件实现单点登录的方法和系统与流程

文档序号:12623986阅读:503来源:国知局
一种采用中间件实现单点登录的方法和系统与流程

本发明涉及单点登录技术领域,尤其涉及一种采用中间件实现单点登录的方法和系统。



背景技术:

单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

现有应用系统大多采用BS结构,将应用系统部署于WEB服务器上,客户端在浏览器上通过http或https进行访问,http协议以明文方式发送内容,如果攻击者截取了Web浏览器和服务器之间的传输报文,就可以直接读懂其中的信息,因此http传输的信息易被泄漏、窃取;相对而言,采用https安全性更可靠些,但必须取得证书,证书还需要在浏览器中进行安装或注册,这就涉及到安全与证书警告,同时一旦拥有证书即可伪造与破解https传输的内容。另外https需要特定的tcp端口(默认为433),当涉及到跨网或者跨域等访问时,该端口可能被禁用,从而导致该种访问方式失效。

在现有的专利申请中,申请号为CN201310174917.9的专利申请公开了一种基于多应用系统统一用户管理及单点登录平台的实现方法,它包括统一用户管理步骤和单点登录步骤,当平台的用户信息发生变动时,自动发送用户信息到各个应用系统;当点击应用系统链接时,如在平台已通过验证,则无需输入密码直接登入。本发明能够整合企业各个独立存在的现有应用系统,但这样的方法仍然难以保证数据的安全。申请号为CN201110162876.2的专利申请公开了一种单点登录方法,包括:客户端在用户登录后根据时间串、随机码和与服务端共享的共享密钥生成秘文,并将时间串、随机码和秘文发送给服务端;服务端根据接收到的所述时间串、随机码和共享密钥生成验证串,以对用户进行鉴权,并根据鉴权结果处理用户的登录请求。本发明还提供了相应的系统。

客户端在用户登录后,这样的话,那客户端就能随意地依照规则生成时间串、随机码。同时共享密钥这种是非常不安全的机制,且该方法未涉及到用户的登录信息,这样就意味着任意的用户、任意的客户端只要通过享密钥就可以利用时间串、随机码生成密文,同时从其表述可以看出,虽然有密文,但是其时间串、随机码是与密文一并发送的,这样就存在在传输过程中时间串、随机码很容易被截获,从而伪造时间串、随机码、密文来欺骗服务端达到登录请求,从而使得该方法失效。



技术实现要素:

针对现有技术中的单点登录方法或者系统存在要实现跨域跨系统间的登录时,在数据传输过程中可能被不法分子窃取、篡改,进而非法登录访问的技术问题,本发明公开了一种采用中间件实现单点登录的方法。本发明还公开了一种采用中间件实现单点登录的系统。

本发明的具体实现方式如下:

一种采用中间件实现单点登录的方法,其具体包括以下的步骤:当判断用户想要通过浏览器从门户系统进入应用系统时,门户系统上的第一中间件获取用户的参数,并对用户的参数进行动态加密后发送给目标地址对应的应用系统的服务器;应用系统的服务器上的第二中间件对用户的参数进行解密并对参数进行有效性验证,若无效,则返回登录失败信息;若有效,则验证参数中的登录用户号是否已登录,若已登录,则返回已登录信息;若未登录,则向AD认证服务器申请AD认证,若AD认证失败,则返回登录失败信息,若AD认证成功,则 返回登录成功信息;当判断登录用户号已登录时,将目标地址赋值给单点登录目标地址,目标地址附加参数赋值给单点单点登录参数属性,登录用户赋值给单点登录用户号,从而通过单点登录实现应用系统的登录。

更进一步地,上述用户的参数至少包括登录用户号、登录用户AD认证码、转到的目标地址和目标地址附加参数。

更进一步地,上述第一中间件生成访问随机码,通过访问随机码对AD认证真实码进行加密,生成登录用户AD认证码。

更进一步地,上述用户的参数通过控制符进行连接并进行编码,获得单点登录验证码。

更进一步地,上述的第一中间件生成动态加密码,通过动态加密码将用户的参数进行加密,然后发送给应用系统的服务器进行解密验证。

更进一步地,在上述参数中加入时间戳,并设定时间戳的有效时长。

更进一步地,上述第二中间件对用户的参数进行解密,其具体为第二中间件使用动态加密码通过解密将密文变为明文,其解密算法为:判别其奇偶性,为偶则采用动态加密码依次对参数内容按二进制字节依次进行加操作,否则进行减操作,然后以分隔符作为分隔还原参数内容。

更进一步地,上述对参数进行有效性验证包括以下至少一个方面,当其中任一个方面的验证结果为无效,则对参数进行有效性验证的结果为无效:

验证参数类别及内容是否足够,若足够,则有效;

验证参数类型是否正确,若正确,则有效;

将参数通过控制符进行连接并进行编码后,判断其是否与所述单点登录验证码一致,若一致,则有效;

验证所述请求时间戳是否在有效时长内,若是,则有效;

验证所述第源应用系统编码是否有权登录,若有权,则有效。

更进一步地,当验证结果为无效时,返回登录失败信息,该登录失败信息先返回到应用系统的服务器上的第二中间件,然后通过第二中间件发送给门户系统的服务器上的第一中间件,再通知门户系统用户登录失败,禁止登录。

本发明还公开了一种采用中间件实现单点登录的系统,其具体包括门户系统的服务器、应用系统的服务器和AD验证服务器,所述浏览器通过http协议与服务器之间进行数据交换,所述门户系统的服务器上运行第一中间件,所述应用系统的服务器上运行第二中间件,所述AD验证服务器用于进行身份验证;所述第一中间件用于在判断用户想要通过浏览器从门户系统进入应用系统时,获取用户的参数,并对用户的参数进行动态加密后发送给目标地址对应的应用系统的服务器;所述应用系统服务器上的第二中间件对用户的参数进行解密并对参数进行有效性验证,若无效,则返回登录失败信息;若有效,则验证参数中的登录用户号是否已登录,若已登录,则返回已登录信息;若未登录,则向AD认证服务器申请AD认证,若AD认证失败,则返回登录失败信息,若AD认证成功,则返回登录成功信息;当判断登录用户号已登录时,将目标地址赋值给单点登录目标地址,目标地址附加参数赋值给单点单点登录参数属性,登录用户赋值给单点登录用户号,从而通过单点登录实现应用系统的登录。

通过采用以上的技术方案,本发明具有以下的有益效果:本发明通过对用户参数进行加解密使得既能够通过http协议进行安全传输,同时提高了跨域跨系统间单点登录的安全性,通过参数验证可以判断出传输数据是否被非法分子劫获或篡改,进而阻止非法登录访问。本申请中的单点登录是在服务器端实现的,而不是在客户端(这样就可以防止客户端随时伪造时间串、随机码等信息)。在门户系统服务器端由服务器的时间截、随机码是有本质的区别的。其次,本申请最终生成的单点登所有的参数信息通过动态加密后封装成一个整体进行发送,就算信息被拦截也不会被破译,并不是像现有的将相应的参数进行直接发送,第三, 本申请所述之单点登录,不仅处理用户的登录请求,同时还实现对用户有效性、时效性进行鉴权,在鉴权通过后转向到其需要访问的目标地址,从而实现单点登录。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明的采用中间件实现单点登录的方法的流程图。

图2为在门户系统和应用系统的服务器上分别运行中间件的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,很显然,下文所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计,比如本发明中的第二系统可以为一个或者多个,运行中间件的可以是门户系统,也可以是其他的系统等等之类。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本实施例中,第一系统为用户通过登录信息,比如通过输入帐号和密码直接登录的系统,其验证可以通过WEB对应的服务器进行验证,也可以通过专门的AD认证服务器进行认证,这属于现有的常规方案,不属于本发明的重点,在此不详细描述。

为了符合用户的使用习惯,其第一系统可以为公司的门户系统,比如公司的门户网页,第二系统则为通过单点登录方式登录的其他被门户系统信任的应用系统,在实际应用中,第二系统可以为一个或者多个,每个第二系统与第一系统之间的信号传输关系相同,具体的单点登录方式也相同,为了便于描述,下面仅以一个第二系统为例进行说明。

如图1所示的本发明的采用中间件实现单点登录的方法的流程图。本发明公开了一种采用中间件实现单点登录的方法,其具体包括以下的步骤:当判断用户想要通过浏览器从门户系统进入应用系统时,门户系统上的第一中间件获取用户的参数,并对用户的参数进行动态加密后发送给目标地址对应的应用的服务器;应用系统的服务器上的第二中间件对用户的参数进行解密并对参数进行有效性验证,若无效,则返回登录失败信息;若有效,则验证参数中的登录用户号是否已登录,若已登录,则返回已登录信息;若未登录,则向AD认证服务器申请AD认证,若AD认证失败,则返回登录失败信息,若AD认证成功,则返回登录成功信息;当判断为登录用户号已登录时,将目标地址赋值给单点登录目标地址,目标地址附加参数赋值给单点单点登录参数属性,登录用户赋值给单点登录用户号,从而通过单点登录实现应用系统的登录。

步骤S11、用户在第一系统中输入用户的登录信息,并通过第一系统的服务器对登录信息进行验证,通过,则返回登录成功信息,并进入登录后的页面,否则,返回登录失败信息;步骤S12、根据用户提供的目标地址判定目标地址是否是第一系统信任的系统,是则启动第一系统的服务器上第一中间件,否则结束;步骤S13、第一中间件获取用户的参数,并对用户的参数进行动态加密后发送给目标地址对应的第二系统的服务器;步骤S14、第二系统的 服务器上的第二中间件对用户的参数进行解密并对参数进行有效性验证,若无效,则返回登录失败信息;若有效,则验证参数中的登录用户号是否已登录,若已登录,则返回已登录信息;若未登录,则向AD认证服务器申请AD认证,若AD认证失败,则返回登录失败信息,若AD认证成功,则返回登录成功信息;步骤S15、将目标地址赋值给单点登录目标地址,目标地址附加参数赋值给单点单点登录参数属性,登录用户赋值给单点登录用户号,从而实现第二系统的单点登录。本发明通过对用户参数进行加解密使得既能够通过http协议进行安全传输,同时提高了跨域跨系统间单点登录的安全性,通过参数验证可以判断出传输数据是否被非法分子劫获或篡改,进而阻止非法登录访问。

其中,对第一系统中输入的用户的登录信息的验证可以在第一系统对应的服务器上直接进行验证,也可以采用AD认证服务器进行验证。

需要说明的是,在上述的具体实施例中,第一中间件运行在门户系统的服务器上,用于提取用户的参数和并进行加密,第二中间件运行在应用系统对应的服务器上,用于解密和验证。当然也可以将这两种功能的中间件集成封装在同一个中间件上,并将该中间件运行在所信任的每个服务器上,根据需要运行不同的功能,从而实现所有相互信任系统的单点登录。

更具体地,上述第一中间件获取用户的参数如下表1所示,称为第一单点登录参数组。

第一中间件获取到以上的7个用户参数,并通过第一中间件同时生成动态加密码和访问随机码(表2中的序号7、8),通过访问随机码对所述第一单点登录参数组中的AD认证真实码进行加密,生成登录用户AD认证码(表2序号5),即得到如下表2,称为第二单点登录参数组。

为了防止过期的访问发生,例如:有些访问,例如待办,它是有时效性的,比如3分钟或者更短的时间,就禁止访问。或者就算访问到了它,也是一个过时的信息。这可以通过时间戳来实现。下表为添加了时间戳的参数表,称为第三单点登录参数组。

第一中间件将除了动态加密码之外的上述9个参数通过控制符进行连接("\r\n"+dstAppNo+"\r\n"+srcAppNo+"\r\n"+userNo+"\r\n"+requestMinutes+"\r\n"+loginNo+"\r\n"+visitRandomNo+"\r\n"+userCertAD+"\r\n"+gotoURL+"\r\n"+urlParams)后,再进行编码(比如编码方式可以为MD5)后,获得单点登录验证码,将单点登录验证码加入到上述的参数表中。进而得到下表4,称为第四单点登录参数组。

当用户在门户网站上点击相应的应用系统图标时,第一中间即获取到上述的第四单点登录参数组,并将该参数组发送到该应用系统所对应的服务器上,即本实施例中所描述的第二系统对应的服务器。

需要说明的是,本具体实施例的第四单点登录参数组包含了11项参数,但在不同的实际需求情况下,所述参数的数量、类别和内容都可能会发生变化,只要按照本发明提供的方法进行加解密,无论加解密前后的参数数量和内容如何,均在本发明的保护范围之内。

更具体地,上述步骤S14中第二系统的服务器上的第二中间件对用户的参数进行解密,其具体为第二中间件使用动态加密码通过解密将密文变为明文,其解密算法为:判别其奇偶性,为偶则采用动态加密码依次对参数内容按二进制字节依次进行加操作,否则进行减操作,然后以分隔符“\r\n”作为分隔还原参数内容。

然后对解密后的参数进行有效性验证,当所有的参数验证都通过后,验证登录用户号是否登录,是,则返回已登录信息并进行单点登录的赋值和跳转,否则还需向AD认证服务器申请AD认证。若AD认证失败,则第二中间件获得认证失败信息,然后返回登录失败信息,再通知门户系统用户登录失败,禁止登录。若AD认证成功,则第二中间件获得认证成功信息,然后通知门户子系统用户登录成功,并由代理URL跳转到目标地址页面。

为了方便下一次单点登录,AD认证成功后,返回所述第四单点登录参数组中的登录用户号、转到的目标地址和目标地址附加参数,将其赋值到第四单点登录参数组中。

进一步的,考虑到在数据的传输过程中,不法分子劫获并破译传输信息的情况下,本发明中加入请求时间戳参数,以进行时效性管理,为了防止加密端和解密端的时钟不一致而导致时间戳的判别处理失效,还需要引入时钟同步管理机制,使第二中间件与所述单点登录加密参数的加密端即第一中间件保持时钟一致。

对于参数的验证,可以根据实际需求和参数组的参数类别、内容进行有效性检验,包括以下至少一个方面,可以设定其中任一个方面的验证结果为无效,则对参数进行有效性验证的结果为无效:

验证参数类别及内容是否足够,若足够,则有效;

验证参数类型是否正确,若正确,则有效;

将参数通过控制符进行连接并进行MD5编码后,判断其是否与所述单点登录验证码一致,若一致,则有效;

验证所述请求时间戳是否在有效时长内,若是,则有效;

验证所述第源应用系统编码是否有权登录,若有权,则有效。

仍以上述本发明提供的优选的具体实施例为例,在解密后获得参数,第二中间件对其进行有效性检验如下:

验证第四单点登录参数组中的参数是否足够,包括参数的类别是否足够、参数的数量是否足够以及参数的内容是否足够等多个子项的有效性验证,如果有任一项子项不足够,则该有效性验证结果为无效,此时返回登录失败信息,该登录失败信息先返回到应用系统服务器上的第二中间件,然后通过第二中间件发送给门户系统服务器上的第一中间件,再通知门户子系统用户登录失败,禁止登录。若全部子项的有效性验证结果都为有效,则本有效性验证结果为有效,可以进行其他步骤。

验证第四单点登录参数组中的参数类型是否匹配,即每个参数类型是否与预先设定或约定的参数类型相匹配,其中任一项参数不匹配,说明参数存在被篡改的可能,有安全隐患,验证结果为无效,此时返回登录失败信息,该登录失败信息先由第二中间件返回到第二调用模块,然后第二调用模块再将其发送到第一调用模块,由门户系统通知用户登录失败,禁止登录。若全部参数的类型都匹配,则本有效性验证结果为有效,可以进行其他步骤。

本发明在具体实现的时候可以采用代理URL的方式来实现,首先,在门户系统中来源URL调用部署在门户系统中的第一中间件将预定种类的单点登录参数组进行处理并加密,然后,来源URL将加密后获得的单点登录加密参数传输到部署在业务系统的代理URL,该代理URL调用部署在业务系统的第二中间件进行解密后进行有效性验证和已登录验证,从而实现单点登录,有效解决了传统的使用用户名和密码进行单点登录时容易发生泄密和账号失窃的问题。采用代理URL的方式,在登录之后,用户看到的界面和原来单独登录应用系统的界面完全一致,符合用户的使用习惯。

也就是说,本发明引入部署在WEB服务器上的“企业信息门户单点登录中间件”(后文简称中间件),采用中间件的方式对参数进行加密封包、解密验证,该中间件调用简单,部署方便,且该中间件部署于各个业务系统的WEB服务器上,相应的代码仅在服务器上运行,且可兼容于各种浏览器版本,提高了信息的安全性,在采用http方式进行信息传递的情况下,为确保信息的安全,将http传送的信息进行加密,各个业务系统提供单点登录代理URL,该代理URL访问中间件,并将当前登录的用户号及访问该代理URL的信息以参数(单点登录认证参数)的方式传递给中间件,中间件的加密与解密过程是封闭式的,保证了安全性。

本发明还公开了一种采用中间件实现单点登录的系统,其具体包括包括至少一个门户子系统和至少一个业务子系统,用户通过门户子系统登录业务子系统,该门户子系统包括使用本发明提供的第一中间件,该业务子系统包括使用本发明提供的第二中间件;该门户子系统还包括第一调用模块,可以称为来源URL,用于获取单点登录参数组、调用所述第一中间件进行加密以及与所述业务子系统间传输信号,所述业务子系统还包括第二调用模块,该第二调用模块部署于业务子系统,可以称为代理URL,用于与门户子系统间传输信号以及调用所述第二中间件进行解密验证。

图2为在门户系统和应用系统的服务器上分别运行中间件的结构示意图。其中第一中间件运行在门户系统的服务器上,第二中间件运行在应用系统的服务器上。在实际应用中,任何被信任的系统都可以做为本实施例中描述的门户系统或者第一系统,其它的系统作为本实施例中的第二系统。门户系统上运行的第一中间件获取用户参数,并将用户参数经过加密和 编码后发送给应用系统服务器上的第二中间件进行解密验证。

本实施例中的加解密采用第一中间件生成的动态加密码实现,加密码动态变化,保证了加密的效果。

本发明的另外一个实施例,当用户没有在门户网站中进行登录或者登录后已经退出,此时点击了门户网站中应用系统的图标时,此时第一中间件也启动,但在验证登录用户号是否登录时,判断结果为未登录,此时需要进行AD认证。

认证所述单点登录参数组中的登录用户号是否已登录,若AD认证失败,则返回登录失败信息,若AD认证成功,则返回登录成功信息。

本发明采用中间件的方式实现单点登录,不改变现有已经存在的门户系统或者应用系统的架构,实现成本低,在门户系统的中间件上,采用动态加密的方式实现参数的加密,在应用系统的中间件上进行解密验证,保证了数据的安全和不被篡改,提高了整个系统的安全性。

本发明的另外一个具体实施例

在初始条件下,单点登录目标地址、单点登录参数属性这两个参数的值为空,从而确保系统的安全。只有在通过参数验证以及登录用户号已经登录的情况下,这两个参数才得到赋值,从而实现单点登录并进行页面跳转。

本发明的另外的实施例

本发明实施例提供的一种用于单点登录的解密验证方法和一种用于单点登录的参数加密方法,为单点登录技术提供了一种更加安全的解决方案,两种方法是基于共同的技术方案而互相配合使用的,其共同的技术方案为:首先,在门户系统中来源URL调用部署在门户系统中的第一中间件将预定种类的单点登录参数组进行处理并加密,然后,来源URL将加密后获得的单点登录加密参数传输到部署在业务系统的代理URL,该代理URL调用部署在业务系统的第二中间件进行解密后进行有效性验证和已登录验证,从而实现单点登录,有效解决了传统的使用用户名和密码进行单点登录时容易发生泄密和账号失窃的问题。

也就是说,本发明引入部署在WEB服务器上的“企业信息门户单点登录中间件”(后文简称中间件),采用中间件方式对参数进行加密封包、解密验证,该中间件调用简单,部署方便,且该中间件部署于各个业务系统的WEB服务器上,相应的代码仅在服务器上运行,且可兼容于各种浏览器版本,提高了信息的安全性,在采用http方式进行信息传递的情况下,为确保信息的安全,将http传送的信息进行加密,各个业务系统提供单点登录代理URL,该代理URL访问中间件,并将当前登录的用户号及访问该代理URL的信息以参数(单点登录认证参数)的方式传递给中间件,中间件的加密与解密过程是封闭式的,保证了安全性。

为了便于理解,在此先对本发明公开的一个优选的具体实施例中进行初步介绍,本发明优选的具体实施例是一单点登录系统,包括至少一个门户子系统和至少一个业务子系统,用户通过门户子系统登录业务子系统,该门户子系统包括使用本发明提供的一种用于单点登录的参数加密方法封装而成的第一中间件,该业务子系统包括使用本发明提供的一种用于单点登录的解密验证方法封装而成的第二中间件;该门户子系统还包括第一调用模块,可以称为来源URL,用于获取第一单点登录参数组、调用所述第一中间件进行加密以及与所述业务子系统间传输信号,所述业务子系统还包括第二调用模块,该第二调用模块部署于业务子系统,可以称为代理URL,用于与门户子系统间传输信号以及调用所述第二中间件进行解密验证。

需要说明的是,在上述优选的具体实施例中,所述第一中间件和所述第二中间件也可以是同样的中间件,其中同时封装了本发明提供的一种用于单点登录的参数加密方法和一种用于单点登录的解密验证方法,只是根据不同的需要采用不同的方法,为了描述清楚,下文中仍将第一中间件和第二中间件区别表述。

下面对本发明的实施例逐一进行详细说明。

一种用于单点登录的解密验证方法,该方法包括步骤S101-S104,具体如下:

步骤S101:获取单点登录加密参数;

本步骤获取单点登录加密参数,传统的单点登录需要发送用户名及密码进行AD认证以实现单点登录,这样用户名和密码容易在网络数据传输过程中被截获、窃取,尤其是在http协议传输过程中,鉴于此,在本步骤之前,在单点登录的请求端(门户子系统)先对单点登录参数进行加密,即使在http协议的传输中,仍可有效避免用户名和密码的泄露。本步骤就是获取加密后的单点登录参数,即单点登录加密参数。

在本发明的优选的具体实施例中,门户子系统中的第一调用模块将单点登录加密参数以http传输协议发送到业务子系统的第二调用模块,第二调用模块将所述单点登录加密参数发送到第二中间件,实现了第二中间件获取单点登录加密参数的步骤,其中第二调用模块可以是代理URL。

步骤S102:对上述单点登录加密参数进行解密,获得第一单点登录参数组;

根据步骤S101已得到单点登录加密参数,接下来,需要对所述单点登录加密参数进行解密,解密的方法是与加密的方法相对应的,例如使用动态加密码对所述单点登录加密参数进行解密,获得第一单点登录参数组。

步骤S103:对上述第一单点登录参数组进行有效性验证,若无效,则执行步骤S122返回登录失败信息;

通过步骤S102,已经过解密获得第一单点登录参数组,接下来,需要对该第一单点登录参数组进行有效性验证,从多个方面对所述第一单点登录参数组进行验证,可以诊断所述第一单点登录参数组在传输过程中是否被窃取、泄露或篡改,如有效性验证结果为无效,则返回登录无效信息,禁止登录,从而提高本发明提供的用于单点登录的解密验证方法的安全性。

针对第一单点登录参数组,可以根据实际需求和参数组的参数类别、内容进行有效性检验,包括以下至少一个方面,其中任一个方面的验证结果为无效,则对该第一单点登录参数组进行有效性验证的结果为无效:

验证所述第一单点登录参数组中的参数类别及内容是否足够,若足够,则有效;

验证所述第一单点登录参数组中的参数类型是否正确,若正确,则有效;

将所述第一单点登录参数组中除单点登录验证码以外的参数通过控制符进行连接并进行MD5编码后,判断其是否与所述第一单点登录参数组中的单点登录验证码一致,若一致,则有效;

验证所述第一单点登录参数组中的请求时间戳是否在有效时长内,若是,则有效;

验证所述第一单点登录参数组中的来源应用系统编码是否有权登录,若有权,则有效。

仍以上述本发明提供的优选的具体实施例为例,在解密后获得第一单点登录参数组后,第二中间件对其进行有效性检验如下:

验证第一单点登录参数组中的参数是否足够,包括参数的类别是否足够、参数的数量是否足够以及参数的内容是否足够等多个子项的有效性验证,如果有任一项子项不足够,则该有效性验证结果为无效,此时返回登录失败信息,该登录失败信息先由第二中间件返回到第二调用模块,然后第二调用模块再将其发送到第一调用模块,通知门户子系统用户登录失败,禁止登录。若全部子项的有效性验证结果都为有效,则本有效性验证结果为有效,可以进行其他步骤。

验证第一单点登录参数组中的参数类型是否匹配,即每个参数类型是否与预先设定或约定的参数类型相匹配,其中任一项参数不匹配,说明参数存在被篡改的可能,有安全隐患,验证结果为无效,此时返回登录失败信息,该登录失败信息先由第二中间件返回到第二调用模块,然后第二调用模块再将其发送到第一调用模块,由门户系统通知用户登录失败,禁止登录。若全部参数的类型都匹配,则本有效性验证结果为有效,可以进行其他步骤。

将所述第一单点登录参数组中除单点登录验证码以外的参数通过控制符进行连接 ("\r\n"+dstAppNo+"\r\n"+srcAppNo+"\r\n"+userNo+"\r\n"+requestMinutes+"\r\n"+loginNo+"\r\n"+visitRandomNo+"\r\n"+userCertAD+"\r\n"+gotoURL+"\r\n"+urlParams),再进行MD5编码后,与第一单点登录参数组中的单点登录验证码进行比对,如果一致则认为参数内容未被修改,可以进行其他步骤,否则认为参数被修改,验证结果为无效,此时返回登录失败信息,该登录失败信息先由第二中间件返回到第二调用模块,然后第二调用模块再将其发送到第一调用模块,通知门户系统用户登录失败,禁止登录。

验证所述第一单点登录参数组中的请求时间戳是否在有效时长内,如超过有效请求时长则验证结果为无效,此时返回登录失败信息,该登录失败信息先由第二中间件返回到第二调用模块,然后第二调用模块再将其发送到第一调用模块,通知门户子系统用户登录失败,禁止登录。否则验证结果为有效,可以进行其他步骤。通过时间戳验证,可以加强时效性管理,防止过期的访问发生,例如:有些访问,例如待办,它是有时效性的,超过5分钟或者更短的时间,它就会禁止访问。或者就算访问到了它,也是一个过时的信息。因此必须通过时间戳来实现,从而对具体的目标URL访问,该目标URL是业务子系统中的统一资源定位符,可以通过时间戳的过时时效来加以限定。

另外,需要强调的是,由于采用http方式进行数据的传递,客户可以拦截传递的数据,然后伪造访问,来访问代理URL,此时,这个时间戳就相当有用,否则就可能会出现长时的访问存在,从而进一步的提高了单点登录的安全性。

验证所述第一单点登录参数组中的来源应用系统编码是否有权登录,如验证结果为无效,此时返回登录失败信息,该登录失败信息先由第二中间件返回到第二调用模块,然后第二调用模块再将其发送到第一调用模块,通知门户子系统用户登录失败,禁止登录。否则验证结果为有效,可以进行其他步骤。

需要说明的是,本具体实施例的有效性验证包括上述多个方面的验证,但在不同的实际需求情况下,所需验证的项目、内容都可能发生变化,但只要其能够验证第一单点登录参数组的有效性,判断其是否被窃取或篡改,就在本发明的技术方案之内,均受本发明的保护。

步骤S104:若有效,则验证所述第一单点登录参数组中的登录用户号是否已登录,若已登录,则执行步骤S123返回已登录信息;

仍以上述优选的具体实施例为例,通过步骤S103,已对所述第一单点登录参数组进行了有效性验证,接下来,需要验证所述第一单点登录参数组中的登录用户号是否已登录,包括验证所述第一单点登录参数组中的登录用户号与当前会话登录用户号是否一致,该当前会话登录用户号是代理URL传送的代理URL所在系统的当前会话登录号,如果一致,则验证结果为所述登录用户号已登录,并将验证结果先由第二中间件返回到第二调用模块,然后第二调用模块再将其发送到第一调用模块,通知门户子系统用户已登录,并并由代理URL跳转到目标地址页面。如果不一致,则验证结果为所述登录用户号未登录,需进行AD认证。

步骤S105:若未登录,则使用所述第一单点登录参数组向AD认证服务器申请AD认证,若AD认证失败,则执行步骤S124返回登录失败信息,若AD认证成功,则执行步骤S125返回登录成功信息。

通过步骤S104,已验证所述第一单点登录参数组中的登录用户号是否已登录,若未登录,则使用所述第一单点登录参数组向AD认证服务器申请AD认证,其具体包括:

使用所述第一单点登录参数组中的访问随机码对所述第一单点登录参数组中的登录用户AD认证号进行解码,获取AD认证真实码;

使用所述第一单点登录参数组中的登录用户号与所述AD认证真实码向AD认证服务器申请AD认证。

仍以上述优选的具体实施例为例,为了进一步增强数据传输的安全性,该第一单点登录参数组中的登录用户AD认证号是预先经过加密生成的,等同于预先将密码明文经过加密变为 密码密文,在本步骤中,第二中间件再通过解密将密码密文变为密码明文,然后向AD认证服务器申请AD认证。若AD认证失败,则第二中间件获得认证失败信息,然后向第二调用模块返回登录失败信息,第二调用模块再将其发送到第一调用模块,通知门户系统用户登录失败,禁止登录。若AD认证成功,则第二中间件获得认证成功信息,然后想第二调用模块返回登录成功信息,第二调用模块再将其发送到第一调用模块,通知门户子系统用户登录成功,并由代理URL跳转到目标地址页面。

为了方便下一次单点登录,AD认证成功后,返回所述第一单点登录参数组中的登录用户号、转到的目标地址和目标地址附加参数,将其赋值到第一单点登录参数组中。

进一步的,考虑到在数据的传输过程中,不法分子劫获并破译传输信息的情况下,本发明中加入请求时间戳参数,以进行时效性管理,为了防止加密端和解密端的时钟不一致而导致时间戳的判别处理失效,还需要引入时钟同步管理机制,使第二中间件与所述单点登录加密参数的加密端即第一中间件保持时钟一致。

综上,该方法对多个参数进行有效性验证,且使用动态加密码进行解密,提高了提高了跨域跨系统间单点登录的安全性,可以判断出传输数据是否被非法分子劫获或篡改,进而阻止非法登录访问。进一步的,又验证请求时间戳参数,以进行时效性管理,进一步的增加了单点登录的安全性。

上述对解密过程进行了详细的介绍,接下来,将对单点登录参数的加密过程进行介绍,该加密方法主要包括步骤S201-S204,具体如下:

步骤S201:获取预定类型的第二单点登录参数组;

本步骤首先获取预定类型的第二单点登录参数组,该第二单点登录参数组至少包括参数:登录用户号、AD认证真实码、转到的目标地址和目标地址附加参数。

以上述本发明的优选的具体实施例为例,门户系统中的第一调用模块获取预定类型的第二单点登录参数组,并将其发送到第一中间件。

步骤S202:生成动态加密码和访问随机码,所述动态加密码和访问随机码与第二单点登录参数组共同组成第三单点登录参数组;

仍以上述优选的具体实施例为例,通过步骤S201,已获取预定类型的第二单点登录参数组,为了进行加密,还需生成动态加密码和访问随机码,并将其与第二单点登录参数组组成第三单点登录参数组。

步骤S203:将所述第三单点登录参数组使用预定的方法处理后,获得第四单点登录参数组;

所述将所述第三单点登录参数组使用预定的方法处理后,获得第四单点登录参数组,是采用以下至少一种方式实现的:

使用所述访问随机码对所述第三单点登录参数组中的AD认证真实码进行加密,生成登录用户AD认证码,将所述登录用户AD认证码和所述第三单点登录参数中的除所述AD认证真实码之外的参数共同组成第四单点登录参数组;

将所述第三单点登录参数组中的各个参数通过控制符进行连接并进行MD5编码,获得单点登录验证码,将所述单点登录验证码与所述第三单点登录参数组共同组成第四单点登录参数组;

生成请求时间戳,将所述请求时间戳与所述第三单点登录参数组共同组成第四单点登录参数组。

仍以本发明的优选的具体实施例为例,通过步骤S202,已生成动态加密码和访问随机码并获得第三单点登录参数组,接下来按照如下步骤获得第四单点登录参数组。

使用所述访问随机码对所述第三单点登录参数组中的AD认证真实码进行加密,生成登录用户AD认证码,将所述登录用户AD认证码和所述第三单点登录参数中的除所述AD认证真实码 之外的参数共同组成第四单点登录参数组,加密的算法为业界通用算法,在此不再赘述;

将第三单点登录参数组中的参数通过控制符进行连接("\r\n"+dstAppNo+"\r\n"+srcAppNo+"\r\n"+userNo+"\r\n"+requestMinutes+"\r\n"+loginNo+"\r\n"+visitRandomNo+"\r\n"+userCertAD+"\r\n"+gotoURL+"\r\n"+urlParams)后,再进行MD5编码后,获得单点登录验证码,将所述单点登录验证码与所述第三单点登录参数组共同组成第四单点登录参数组;

生成请求时间戳,所述时间戳是第一中间件依据系统时间减去2001年1月1日后获得的分钟数,将所述请求时间戳与所述第三单点登录参数组共同组成第四单点登录参数组。

步骤S204:使用所述动态加密码对所述第四单点登录参数组进行加密,获得单点登录加密参数;

通过步骤S203,已将所述第三单点登录参数组使用预定的方法处理后,获得第四单点登录参数组,接下来需要使用动态加密码对所述第四单点登录参数组进行加密,获得单点登录加密参数。

以本发明的优选的具体实施例为例,将第四单点登录参数组中的参数以“\r\n”进行连接为字符串,并转为二进制串,用动态加密码对参数进行加密(解密算法为,判别其奇偶性,为偶则采用动态密码依次对参数内容按二进制字节依次进行减操作,否则进行加操作)形成参数加密串,即单点登录加密参数。

需要说明的是,上述方法仅是使用动态加密码进行加密的方式之一,除此之外的其他使用动态加密码进行加密的方式也在本发明的保护范围之内。

综上,该方法采用中间件的方式,在WEB服务器上部署中间件,对单点登录参数进行加密并使用动态加密码,提高了数据传输的安全性,且加密封包时加入时间戳,防止不法分子破译后访问目标网址。

本发明实施例还提供了一种用于单点登录的解密验证装置30,该装置的主要结构包括:

获取模块301,用于获取单点登录加密参数;

解密模块302,用于对所述单点登录加密参数进行解密,获得第一单点登录参数组;

有效性验证模块303,用于对所述第一单点登录参数组进行有效性验证,若验证结果为无效,则返回登录失败信息;

已登录验证模块304,用于验证所述第一单点登录参数组中的登录用户号是否已登录,若验证结果为已登录,则返回已登录信息;

请求AD认证模块305,用于使用所述第一单点登录参数组向AD认证服务器申请AD认证,若AD认证失败,则返回登录失败信息,若AD认证成功,则返回登录成功信息。

上述解密模块302包括:

解密单元,用于使用动态加密码对所述单点登录加密参数进行解密,获得第一单点登录参数组。

上述有效性验证模块303包括以下至少一个单元,其中任一单元的验证结果为无效时,则所述有效性验证模块的验证结果为无效:

参数类别及内容验证单元,用于验证所述第一单点登录参数组中的参数类别及内容是否足够,若足够,则验证结果为有效;

参数类型验证单元,用于验证所述第一单点登录参数组中的参数类型是否正确,若正确,则验证结果为有效;

MD5编码验证单元,用于将所述第一单点登录参数组中除单点登录验证码以外的参数通过控制符进行连接并进行MD5编码后,判断其是否与所述第一单点登录参数组中的单点登录验证码一致,若一致,则验证结果为有效;

请求时间戳验证单元,用于验证所述第一单点登录参数组中的请求时间戳是否在有效时 长内,若是,则验证结果为有效;

来源应用系统编码验证单元,用于验证所述第一单点登录参数组中的来源应用系统编码是否有权登录,若有权,则验证结果为有效。

上述已登录验证模块304包括:

已登录验证单元,用于验证所述第一单点登录参数组中的登录用户号与当前会话登录用户号是否一致,若一致,则验证结果为已登录,否则验证结果为为未登录。

上述请求AD认证模块305包括:

解码单元,用于使用所述第一单点登录参数组中的访问随机码对所述第一单点登录参数组中的登录用户AD认证号进行解码,获取AD认证真实码;

请求AD认证单元,用于使用所述第一单点登录参数组中的登录用户号与所述AD认证真实码进行AD认证。

上述装置还包括:时钟同步模块,用于采用时钟同步管理机制,与所述单点登录加密参数的加密端保持时钟一致。

上述装置还包括:参数返回模块,用于AD认证成功后,返回所述第一单点登录参数组中的登录用户号、转到的目标地址和目标地址附加参数。

综上,该装置对多个参数进行有效性验证,提高了提高了跨域跨系统间单点登录的安全性,可以判断出传输数据是否被非法分子劫获或篡改,进而阻止非法登录访问。进一步的,又验证请求时间戳参数,以进行时效性管理,进一步的增加了单点登录的安全性。

本发明实施例还提供了一种用于单点登录的参数加密装置40,该装置的主要结构包括:

获取模块401,用于获取预定类型的第二单点登录参数组;

动态加密码和访问随机码生成模块402,用于生成动态加密码和访问随机码,所述动态加密码和访问随机码与第二单点登录参数组共同组成第三单点登录参数组;

处理模块403,用于将所述第三单点登录参数组使用预定的方法处理后,获得第四单点登录参数组;

加密模块404,用于使用所述动态加密码对所述第四单点登录参数组进行加密,获得单点登录加密参数;

上述处理模块403至少包括以下一种单元:

访问随机码处理单元,用于使用所述访问随机码对所述第三单点登录参数组中的AD认证真实码进行加密,生成登录用户AD认证码,将所述登录用户AD认证码和所述第三单点登录参数中的除所述AD认证真实码之外的参数共同组成第四单点登录参数组;

MD5编码处理单元,用于将所述第三单点登录参数组中的各个参数通过控制符进行连接并进行MD5编码,获得单点登录验证码,将所述单点登录验证码与所述第三单点登录参数组共同组成第四单点登录参数组;

请求时间戳处理单元,用于生成请求时间戳,将所述请求时间戳与所述第三单点登录参数组共同组成第四单点登录参数组。

上述装置还包括:时钟同步模块,用于采用时钟同步管理机制,与所述单点登录加密参数的加密端保持时钟一致。

综上,该装置对单点登录参数进行加密后传输,并且在加密过程中使用动态加密的方法,又加入请求时间戳,为数据传输过程的安全性提供支持。

本发明实施例还提供了一种单点登录系统,该系统至少包括两个子系统,其中第一子系统51包括第一调用装置511和上述的用于单点登录的参数加密装置40,第二子系统52包括第二调用装置521和上述的用于单点登录的解密验证装置30;

上述第一调用装置511,用于获取预定类型的第二单点登录参数组,调用本发明实施例提供的用于单点登录的参数加密装置40对所述第二单点登录参数组进行处理并加密,获得单 点登录加密参数,并将所述单点登录加密参数发送到第二调用装置521;

上述第二调用装置521,用于接收所述第一调用装置511发送的单点登录加密参数,调用本发明实施例提供的用于单点登录的解密验证装置30对其进行解密及单点登录验证,当认证结果为登录成功或已登录时,跳转到目标登录页面。

综上所述,单点登录系统通过在门户系统中来源URL调用部署在门户系统中的第一中间件将预定种类的单点登录参数组进行处理并加密,该加密的方法可以是上述的用于单点登录的参数加密方法,然后,来源URL将加密后获得的单点登录加密参数传输到部署在业务系统的代理URL,该代理URL调用部署在业务系统的第二中间件进行解密后进行有效性验证和已登录验证,该解密验证的方法可以是上述的用于单点登录的解密验证方法,从而实现单点登录,因此,提高了跨域跨系统间单点登录的安全性,防止非法分子对传输数据的篡改,阻止非法登录访问。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1