一种面向系统集成的跨域单点登录系统及方法与流程

文档序号:12829222阅读:288来源:国知局
一种面向系统集成的跨域单点登录系统及方法与流程

本发明属计算机应用领域,更准确的说本发明提供一种用于系统集成中跨域单点登录系统及方法。



背景技术:

系统集成时需要将多个独立子系统集中管理,子系统之间单独开发,每个子系统都使用各自的登录功能,因此用户在多个子系统间切换时,需要多次输入用户名和密码,这严重地影响了用户的使用体验,同时也给用户带来管理众多账号密码的压力。

单点登录技术就是为了解决上述系统集成时存在的需要多次输入用户名和密码、给用户带来管理众多账号密码的压力等问题,使用户在系统平台下的任一子系统登录后,再访问其他子系统时,无需再输入用户名和密码。该技术将身份验证和权限管理的工作全部交由单点登录服务完成,这样保证了用户的认证工作全部在后台实现,对用户静默,实现了系统间无缝切换,这极大地提升了用户的使用体验。

在系统集成时,既存在一些已使用很久的老系统,也存在新开发的系统。在集成这些系统时会存在以下问题:

(1)有的系统已具备登录功能,有的系统并没有登录入口。

(2)不同子系统可能部署在不同域下。

(3)不同子系统可能使用不同的开发语言实现开发。

另外系统还存在维护方已不再维护的情况,无法更改源代码,因此研究开发一种支持跨域、跨开发平台且使用简单、不侵入原有系统的单点登录方法尤为重要。本发明就是基于这种需求而开发的一种面向系统集成的跨域单点登录方法。

经初步检索,暂未发现有与本

技术实现要素:
相关的专利条目。

发明内容

鉴于以上系统集成中遇到的问题,本发明借助访问代理和模拟登录,提供一种面向系统集成的跨域单点登录系统及方法,该系统配置简单、不侵入原系统代码,且支持跨域分布在多个域名下的系统均能实现无缝访问,因此特别适用于跨域、跨开发平台的系统集成需求。另外该方法还具有适用于高并发场景、支持免登陆的特性。

本发明在每个系统上部署访问代理服务器,访问代理服务器与系统在同一域名之下,且不侵入原有系统代码、不更改原有系统配置。用户向系统发出的请求首先需要通过访问代理服务器,由访问代理服务器负责处理请求的工作,但用户并无法感知到访问代理服务器的存在。

当用户首次向系统发出访问请求时,访问代理服务器将用户访问的资源重定向到单点登录服务器的统一登录界面,用户输入正确的用户名和密码之后,单点登录服务器的授权码生成模块授予该用户唯一授权码,该授权码用于其他系统校验该用户是否成功登录。

单点登录系统部署时,需要为每个系统设置登录接口。登录接口分为两种,第一种是系统原生登录接口,自带登录功能的系统必须设置这种接口;另外一种为访问代理服务中的登录接口,全部系统都需要设置这种接口。当用户成功登录后,单点登录服务器返回登录成功界面,在该界面完成模拟登录操作,该操作对用户不可见。成功登录界面,会生成数个不可见的iframe框架,该框架的url为单点登录服务器根据用户信息和子系统登录接口生成。当所有iframe访问成功后,界面会自动跳转到用户请求的url。url为第二种登录接口的iframe,会携带授权码向代理访问层发出请求,代理访问层根据请求信息,使用加密通道再次向单点登录服务器发出验证请求,验证成功后生成带有授权码信息的cookie并将登录信息以<用户名,授权码,生成时间,存活时间>的格式保存在本机。

用户再次访问该系统或其他系统时,发出的请求会携带授权码,代理服务层将该授权码与自身保存的授权码进行比对。当相同时,代理服务层转发此次请求到子系统;当不同时,则请求重定向到统一登录界面;当不存在时,使用加密通道向单点登录服务发起验证请求。

用户向系统发出的请求,访问代理服务验证通过后,将该请求发送给其代理的系统,并将系统的回复信息全部返还给用户。

本发明提供的是这样一种面向系统集成的跨域单点登录系统,其特征在于,包括:

终端,用于向各子系统发送请求;

访问代理服务器,部署在子系统前,并与子系统处于同一顶级域下,用于全权处理和转发一切发往子系统的请求;

单点登录服务器,包括统一登录接口、授权码生成模块、授权码管理模块、模拟登录模块,其中:统一登录接口用于完成用户名、密码登录或免登陆,并将登录信息发送到模拟登录模块;授权码生成模块用于生成唯一授权码;授权码管理模块用于保存用户名、授权码、生成时间、存储时间,同时用于启动定时器定时清理已过时的用户登录信息,还用于对访问代理服务器提出的验证请求,对带有授权码信息的cookie进行验证;模拟登录模块用于向用户展示登录成功界面,并在登录成功界面生成数个不可见的iframe框架。

所述访问代理服务器通过任一编程语言实现,且不侵入子系统及其配置;访问代理服务器可以在不关闭子系统的情况下部署,部署前需要在其配置文件中配置子系统的编码、二级域名、单点登录服务地址等配置项;访问代理服务器部署后,对外公开的子系统地址就改为代理访问层地址。

所述单点登录服务器部署时,为每个系统设置单独的登录接口,登录接口分为两种,第一种是系统原生登录接口,自带登录功能的系统必须设置这种接口;另外一种为访问代理服务器中的登录接口,全部系统都需要设置这种接口。

所述iframe框架的url为第二种登录接口的iframe,会携带授权码向代理访问层发出请求,代理访问层根据请求信息,生成带有授权码信息的cookie。

本发明提供的是这样一种基于面向系统集成的跨域单点登录系统进行跨域单点登录的方法,其特征在于:

所述面向系统集成的跨域单点登录系统包括:

终端,用于向各子系统发送请求;

访问代理服务器,部署在子系统前,并与子系统处于同一顶级域下,用于全权处理和转发一切发往子系统的请求;

单点登录服务器,包括统一登录接口、授权码生成模块、授权码管理模块、模拟登录模块,其中:统一登录接口用于完成用户名、密码登录或免登陆,并将登录信息发送到模拟登录模块;授权码生成模块用于生成唯一授权码;授权码管理模块用于保存用户名、授权码、生成时间、存储时间,同时用于启动定时器定时清理已过时的用户登录信息,还用于对访问代理服务器提出的验证请求,对带有授权码信息的cookie进行验证;模拟登录模块用于向用户展示登录成功界面,并在登录成功界面生成数个不可见的iframe框架;

所述基于上述系统进行跨域单点登录的方法,包括:

用户通过终端向子系统发起请求时,首先由访问代理服务器接受到该请求;

访问代理服务器将该请求转发给子系统的同时,重定向到单点登录服务器的统一登录界面,并通过统一登录接口完成下列登录:

1)填写用户名、密码、是否免登陆;

2)向授权码生成模块请求唯一授权码,授权码生成模块使用guid生成唯一授权码后,由授权码管理模块以<用户名,授权码,生成时间,存活时间>的格式保存,并启动定时器定时清理已过时的用户登录信息,同时由统一登录接口将登录信息发送到模拟登录模块,该模拟登录模块以网页形式向用户展示登录成功界面,并在登录成功界面生成数个不可见的iframe框架,在这些iframe框架中进行模拟登录;

3)登录成功后,由单点登录服务器向访问代理服务器和子系统发送登录信息,登录信息包括用户信息和授权码;

4)子系统收到步骤3)的登录信息并处理后,发送回复信息给访问代理服务器,访问代理服务器将子系统的回复经终端转发给用户;访问代理服务器收到登录信息后,需要对登录信息进行验证,通过验证后即将登录信息保存在子系统中,没有通过验证的返回到统一登录界面。

所述步骤1)的免登录设置保证30天内的免登陆。

所述步骤2)的在这些iframe框架中进行模拟登录具体是:

2-1)从数据库中获取用户具有访问权限的子系统信息;

2-2)生成数个不可见的iframe框架,当所有iframe框架访问完成后,界面自动跳转到用户请求的url,url携带授权码向访问代理服务器发出请求,访问代理服务器根据请求信息,生成带有授权码信息的cookie;

2-3)带有授权码信息的cookie是使用未加密方式获得的,需要向单点登录服务器进行下列验证:访问代理服务器使用rpc协议并加密地向授权码管理模块进行验证,当验证通过时,以<用户名,授权码,生成时间,存活时间>的格式保存,并启动定时器定时清理已过时的用户登录信息,若没有通过验证则抛弃该授权码并重定向到统一登录界面。

所述步骤4)的访问代理服务器收到登录信息后,需要对登录信息进行下列验证:

4-1)访问代理服务器使用rpc协议以加密的方式向单点登录服务器的授权码管理模块发出验证请求;

4-2)验证通过时以<用户名,授权码,生成时间,存活时间>的格式保存,然后启动定时器定时清理已过时的用户登录信息,若没有通过验证则抛弃该授权码并重定向到统一登录界面。

所述用户通过终端访问另外的第二或第三、第四……第n个子系统时,进行下列登录:

(1)用户通过终端向另外的子系统发出请求,该请求中携带授权码,由访问代理服务器首先提取该请求中的授权码,并验证该授权码的合法性;

(2)授权码不合法,或者授权码不存在,需要使用rpc协议并加密地向单点登录服务器的授权码管理模块发出验证请求,验证通过后,以<用户名,授权码,生成时间,存活时间>的格式,让访问代理服务器保存该登录信息,同时转发验证后的登录信息到子系统,经子系统处理后,发送回复信息给访问代理服务器;若没有通过验证则将重定向到统一登录界面;

(3)访问代理服务器将子系统的回复通过终端转发给用户。

本发明基于访问代理和模拟登录的方法,在不侵入系统代码、不更改系统设置的情况下,就能实现跨域、跨开发平台的单点登录,并且还具有适用于高并发场景、支持免登陆的特性。通过在子系统前部署访问代理服务器,全权负责子系统的请求转发与处理。当用户访问子系统时,访问代理服务器将请求重定向到统一登录界面,用户成功登录后,生成唯一授权码。通过使用模拟登录的方式,将授权码及登录信息发送到全部系统。用户使用授权码直接访问本系统或其他系统,无需再次登录。

附图说明

图1为本发明的访问代理服务器与子系统关系图;

图2为本发明的用户首次访问第一个子系统的流程图;

图3为本发明的单点登录服务器的登录流程图;

图4为本发明的用户首次登录其他系统时的流程图;

图5为本发明的面向系统集成的跨域单点登录系统。

具体实施方式:

为更加清晰地描述本发明的具体实施过程,下面结合图示和实例来对本发明进行更加详细的说明。

本发明提供的面向系统集成的跨域单点登录系统,其特征在于,包括:

终端,用于向各子系统发送请求;

访问代理服务器,部署在子系统前,并与子系统处于同一顶级域下,用于全权处理和转发一切发往子系统的请求;

单点登录服务器,包括统一登录接口、授权码生成模块、授权码管理模块、模拟登录模块,其中:统一登录接口用于完成用户名、密码登录或免登陆,并将登录信息发送到模拟登录模块;授权码生成模块用于生成唯一授权码;授权码管理模块用于保存用户名、授权码、生成时间、存储时间,同时用于启动定时器定时清理已过时的用户登录信息,还用于对访问代理服务器提出的验证请求,对带有授权码信息的cookie进行验证;模拟登录模块用于向用户展示登录成功界面,并在登录成功界面生成数个不可见的iframe框架。

所述访问代理服务器通过任一编程语言实现,且不侵入子系统及其配置;访问代理服务器可以在不关闭子系统的情况下部署,部署前需要在其配置文件中配置子系统的编码、二级域名、单点登录服务地址等配置项;访问代理服务器部署后,对外公开的子系统地址就改为代理访问层地址。

所述单点登录服务器部署时,为每个系统设置单独的登录接口,登录接口分为两种,第一种是系统原生登录接口,自带登录功能的系统必须设置这种接口;另外一种为访问代理服务器中的登录接口,全部系统都需要设置这种接口。

所述iframe框架的url为第二种登录接口的iframe,会携带授权码向代理访问层发出请求,代理访问层根据请求信息,生成带有授权码信息的cookie。

如图1所示,在子系统前部署访问代理服务器,访问代理服务器与子系统处于相同域下。访问代理服务器通过任一编程语言实现,且不侵入子系统,包括不侵入子系统配置。访问代理服务器可以在不关闭子系统的情况下部署,部署前需要在其配置文件中配置子系统的编码、二级域名、单点登录服务地址等配置项。部署访问代理服务器后,对外公开的子系统地址改为代理访问层地址。

如图2、图3所示,当用户首次访问第一个子系统时的步骤如下:

1)用户通过终端向第一子系统发起请求,访问代理服务器首先接受到该请求;

2)访问代理服务器将该请求转发给子系统;同时访问代理服务器重定向到单点登录服务器的统一登录界面,用户在该统一登录界面进行下列登录:

2.1)填写用户名、密码、是否免登陆,其中设置为免登录可保证30天内的免登陆;

2.2)用户信息验证通过后,经统一登录接口向授权码生成模块请求唯一授权码;

2.3)授权码生成模块使用guid生成唯一授权码后,由授权码管理模块以<用户名,授权码,生成时间,存活时间>的格式保存,然后启动定时器定时清理已过时的用户登录信息;

2.4)同时由统一登录接口将登录信息发送到模拟登录模块,以网页形式向用户展示登录成功界面,并在登录成功界面生成数个不可见的iframe框架,在这些框架中进行下列模拟登录:

2.4-1)从数据库中获取用户具有访问权限的子系统信息;

2.4-2)生成数个不可见的iframe框架,该框架的url为单点登录服务根据用户信息和具有子系统登录接口生成;当所有iframe框架访问完成后,界面会自动跳转到用户请求的url,url为第二种登录接口的iframe,会携带授权码向访问代理服务发出请求,访问代理服务根据请求信息,生成带有授权码信息的cookie;

2.4-3)带有授权码信息的cookie是使用未加密方式获得的,需要向单点登录服务进行下列验证:访问代理服务使用rpc协议并加密地向授权码管理模块进行验证,当验证通过时以<用户名,授权码,生成时间,存活时间>的格式保存,然后启动定时器定时清理已过时的用户登录信息,若没有通过验证则抛弃该授权码并重定向到统一登录界面;

3)登录成功后,由单点登录服务向访问代理服务和子系统发送登录信息,登录信息包括用户信息和授权码;

4)子系统收到步骤3)的登录信息并处理后,发送回复信息给访问代理服务器;

5)访问代理服务器将子系统的回复经终端转发给用户;

6)访问代理服务器收到登录信息后,需要对登录信息进行验证,通过验证后即将登录信息保存在子系统中,没有通过验证的返回到统一登录界面;所述验证是:

6-1)访问代理服务器使用rpc协议以加密的方式向单点登录服务器的授权码管理模块发出验证请求;

6-2)验证通过时以<用户名,授权码,生成时间,存活时间>的格式保存,然后启动定时器定时清理已过时的用户登录信息,若没有通过验证则抛弃该授权码并重定向到统一登录界面。

如图4、图5所示,用户通过终端访问另外的第二或第三、第四……第n个子系统时,进行下列登录:

(1)用户通过终端向另外的子系统发出请求,该请求中携带授权码,由访问代理服务器首先提取该请求中的授权码,并验证该授权码的合法性;

(2)授权码不合法,或者授权码不存在,需要使用rpc协议并加密地向单点登录服务器的授权码管理模块发出验证请求,验证通过后,以<用户名,授权码,生成时间,存活时间>的格式,让访问代理服务器保存该登录信息;

(3)同时转发验证后的登录信息到子系统;

(4)经子系统处理后,发送回复信息给访问代理服务器;若没有通过验证则将重定向到统一登录界面;

(5)访问代理服务器将子系统的回复通过终端转发给用户。

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