一种单点登录多系统的方法和装置与流程

文档序号:16672380发布日期:2019-01-18 23:40阅读:214来源:国知局
一种单点登录多系统的方法和装置与流程

本发明涉及计算机技术领域,特别是一种单点登录多系统的方法、单点登录多系统的装置、计算机存储介质以及计算设备。



背景技术:

在实际应用中,用户在工作、休闲等场合经常会需要登录多个系统进行处理操作,这些系统间往往存在一定关联,因此用户可采用与用户的唯一身份标识对应的同一用户账号和密码来登录这些系统。例如,对于企业的每位员工来说,在其工作期间,可能需要登录企业的人力资源系统、工作日志系统、产品评测系统、产品发布系统等多个系统。通常,企业会为每位员工分配用户唯一身份标识,从而每位员工能够以与其用户唯一身份标识对应的用户账号和密码来登录上述这些系统,方便企业的管理。现有技术中,在登录上述这些系统时,需要用户以该用户账号和密码逐一登录这些系统,操作繁琐,用户体验差。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的单点登录多系统的方法、单点登录多系统的装置、计算机存储介质以及计算设备。

根据本发明实施例的一方面,提供了一种单点登录多系统的方法,应用于单点登录服务器,包括:

步骤1:接收来自浏览器侧的对待登录系统的登录请求;

步骤2:判断所述浏览器侧是否存在在先系统完成登录后保存的当前cookie;

若否,则执行步骤3:发送验证请求至登录信息服务器,当所述登录信息服务器根据所接收的验证请求对输入的用户信息进行验证并通过后,接收所述登录信息服务器返回的验证通过信息,从所述登录信息服务器获取所述用户信息和与所述用户信息对应的用户唯一身份标识,将所述用户唯一身份标识写入所述待登录系统的cookie中,并将所述用户信息写入redis服务器,从而完成登录所述待登录系统;

若是,则执行步骤4:比较所述待登录系统的父域名与所述当前cookie对应的系统的父域名是否相同;

若相同,则执行步骤5:读取所述当前cookie中保存的用户唯一身份标识,根据所读取的用户唯一身份标识从所述redis服务器拉取与该用户唯一身份标识对应的用户信息,并根据所拉取的用户信息将所述待登录系统的登录状态设置为已登录,从而实现对所述待登录系统的自动登录;

其中,还采用上述步骤,实现对其他一个或多个待登录系统的自动登录。

可选地,在步骤4之后,所述方法还包括:

步骤6:若所述待登录系统的父域名与所述当前cookie对应的系统的父域名不同,则判断所述待登录系统的域名是否在指定信任列表中;

若所述待登录系统的域名在所述指定信任列表中,则执行步骤5;

若所述待登录系统的域名不在所述指定信任列表中,则拒绝登录。

可选地,在步骤3中,所述验证请求携带有所述待登录系统的统一资源定位符url;

所述验证通过信息携带有所述待登录系统的url和所述登录信息服务器在对输入的用户信息进行验证并通过后生成的用户信息获取钥匙;

从所述登录信息服务器获取所述用户信息和对应的用户唯一身份标识,包括:

调用所述单点登录服务器的第一用户信息获取接口,向所述登录信息服务器发送携带所述用户信息获取钥匙的第一用户信息获取请求,并接收所述登录信息服务器根据所述第一用户信息获取请求返回的与所述用户信息获取钥匙对应的用户信息和用户唯一身份标识。

可选地,在步骤3中,将所述用户信息写入redis服务器,包括:

通过调用所述单点登录服务器的指定写入接口将所述用户信息写入redis服务器。

可选地,在步骤5中,根据所读取的用户唯一身份标识从所述redis服务器拉取与该用户唯一身份标识对应的用户信息,包括:

调用所述单点登录服务器的第二用户信息获取接口,向所述redis服务器发送携带有所读取的用户唯一身份标识的第二用户信息获取请求,并接收所述redis服务器根据所述第二用户信息获取请求返回的与该用户唯一身份标识对应的用户信息。

可选地,所述redis服务器中写入的用户信息设置有过期时间,此时,

接收所述redis服务器根据所述第二用户信息获取请求返回的与该用户唯一身份标识对应的用户信息,包括:

当所述redis服务器在接收到所述携带有所读取的用户唯一身份标识的第二用户信息获取请求后,在自身查找到与该读取的用户唯一身份标识对应的用户信息时,接收所述redis服务器返回的与该用户唯一身份标识对应的用户信息;

当所述redis服务器在接收到所述携带有所读取的用户唯一身份标识的第二用户信息获取请求后,在自身未查找到与该读取的用户唯一身份标识对应的用户信息时,接收所述redis服务器返回的指示未获取成功的信息,并执行步骤3。

可选地,在步骤3中,从所述登录信息服务器获取所述用户信息和与所述用户信息对应的用户唯一身份标识之后,还包括:

将所述用户信息写入所述待登录系统的session中。

可选地,在步骤1之后且步骤2之前,所述方法还包括:

判断是否存在所述待登录系统的session;

若存在,则读取所述待登录系统的session中保存的用户信息;

根据所述用户信息将所述待登录系统的登录状态设置为已登录,从而实现自动登录所述待登录系统;

若不存在,则执行步骤2。

可选地,所述用户唯一身份标识包括用户邮箱的md5值;

所述用户信息包括用户登录账号和密码。

可选地,与所述登录信息服务器和所述redis服务器之间的信息传输采用https协议进行。

根据本发明实施例的另一方面,还提供了一种单点登录多系统的装置,应用于单点登录服务器,包括:

登录请求接收模块,适于执行步骤1:接收来自浏览器侧的对待登录系统的登录请求;

cookie判断模块,适于执行步骤2:判断所述浏览器侧是否存在在先系统完成登录后保存的当前cookie;

验证登录模块,适于若所述浏览器侧不存在在先系统完成登录后保存的当前cookie,则执行步骤3:发送验证请求至登录信息服务器,当所述登录信息服务器根据所接收的验证请求对输入的用户信息进行验证并通过后,接收所述登录信息服务器返回的验证通过信息,从所述登录信息服务器获取所述用户信息和与所述用户信息对应的用户唯一身份标识,将所述用户唯一身份标识写入所述待登录系统的cookie中,并将所述用户信息写入redis服务器,从而完成登录所述待登录系统;

同域/跨域判断模块,适于若所述浏览器侧存在在先系统完成登录后保存的当前cookie,则执行步骤4:比较所述待登录系统的父域名与所述当前cookie对应的系统的父域名是否相同;以及

同域自动登录模块,适于若所述待登录系统的父域名与所述当前cookie对应的系统的父域名相同,则执行步骤5:读取所述当前cookie中保存的用户唯一身份标识,根据所读取的用户唯一身份标识从所述redis服务器拉取与该用户唯一身份标识对应的用户信息,并根据所拉取的用户信息将所述待登录系统的登录状态设置为已登录,从而实现对所述待登录系统的自动登录;

其中,还采用上述模块执行相应步骤,实现对其他一个或多个待登录系统的自动登录。

可选地,所述装置还包括:

跨域自动登录模块,适于在所述同域/跨域判断模块执行所述步骤4之后,执行步骤6:若所述待登录系统的父域名与所述当前cookie对应的系统的父域名不同,则判断所述待登录系统的域名是否在指定信任列表中;

若所述待登录系统的域名在所述指定信任列表中,则触发所述同域自动登录模块执行步骤5;

若所述待登录系统的域名不在所述指定信任列表中,则拒绝登录。

可选地,所述验证请求携带有所述待登录系统的统一资源定位符url;

所述验证通过信息携带有所述待登录系统的url和所述登录信息服务器在对输入的用户信息进行验证并通过后生成的用户信息获取钥匙;

所述验证登录模块还适于:

调用所述单点登录服务器的第一用户信息获取接口,向所述登录信息服务器发送携带所述用户信息获取钥匙的第一用户信息获取请求,并接收所述登录信息服务器根据所述第一用户信息获取请求返回的与所述用户信息获取钥匙对应的用户信息和用户唯一身份标识。

可选地,所述验证登录模块还适于:

通过调用所述单点登录服务器的指定写入接口将所述用户信息写入redis服务器。

可选地,所述同域自动登录模块还适于:

调用所述单点登录服务器的第二用户信息获取接口,向所述redis服务器发送携带有所读取的用户唯一身份标识的第二用户信息获取请求,并接收所述redis服务器根据所述第二用户信息获取请求返回的与该用户唯一身份标识对应的用户信息。

可选地,所述redis服务器中写入的用户信息设置有过期时间,此时,

所述同域自动登录模块还适于:

当所述redis服务器在接收到所述携带有所读取的用户唯一身份标识的第二用户信息获取请求后,在自身查找到与该读取的用户唯一身份标识对应的用户信息时,接收所述redis服务器返回的与该用户唯一身份标识对应的用户信息;

当所述redis服务器在接收到所述携带有所读取的用户唯一身份标识的第二用户信息获取请求后,在自身未查找到与该读取的用户唯一身份标识对应的用户信息时,接收所述redis服务器返回的指示未获取成功的信息,并触发所述验证登录模块执行步骤3。

可选地,所述验证登录模块还适于:

从所述登录信息服务器获取所述用户信息和与所述用户信息对应的用户唯一身份标识之后,将所述用户信息写入所述待登录系统的session中。

可选地,所述装置还包括:

基于session的登录模块,适于:在所述登录请求接收模块执行步骤1之后且所述cookie判断模块执行步骤2之前,判断是否存在所述待登录系统的session;

若存在,则读取所述待登录系统的session中保存的用户信息;

根据所述用户信息将所述待登录系统的登录状态设置为已登录,从而实现自动登录所述待登录系统;

若不存在,则触发所述cookie判断模块执行步骤2。

可选地,所述用户唯一身份标识包括用户邮箱的md5值;

所述用户信息包括用户登录账号和密码。

可选地,所述装置与所述登录信息服务器和所述redis服务器之间的信息传输采用https协议进行。

根据本发明实施例的再一方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据上文中任一项所述的单点登录多系统的方法。

根据本发明实施例的又一方面,还提供了一种计算设备,包括:

处理器;以及

存储有计算机程序代码的存储器;

当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行根据上文中任一项所述的单点登录多系统的方法。

本发明实施例提出的单点登录多系统的方法和装置,实现了单一系统登录后,其他相关系统不必重复登录的功能。首先,在接收到来自浏览器侧的对待登录系统的登录请求后,判断出浏览器侧不存在在先系统完成登录后保存的当前cookie,则跳转至登录信息服务器,输入用户信息进行登录验证;通过验证登录成功后,从登录信息服务器获取用户信息和对应的用户唯一身份标识,将用户唯一身份标识写入该待登录系统的cookie中,并将用户信息写入redis服务器。然后,在接收到来自浏览器侧的对另一待登录系统的登录请求后,判断出此时浏览器侧存在前一系统完成登录后保存的当前cookie,比较当前待登录系统的父域名与当前cookie对应的前一系统的父域名是否相同;若相同,即,当前待登录系统与当前cookie对应的前一系统为同域系统,则读取当前cookie中保存的用户唯一身份标识,根据所读取的用户唯一身份标识从redis服务器拉取与该用户唯一身份标识对应的用户信息,并根据所拉取的用户信息将当前待登录系统的登录状态设置为已登录,从而实现对当前待登录系统的自动登录。通过根据在先系统完成登录后保存的cookie去获取用户的登录信息,进而自动登录与在先系统同域的其它相关系统,实现了在同域情况下,通过一次登录验证操作登录多个系统的功能。

进一步地,若比较得出当前待登录系统的父域名与当前cookie对应的前一系统的父域名不同,即,当前待登录系统与当前cookie对应的前一系统为跨域系统,则判断当前待登录系统的域名是否在指定信任列表中,若是,则按照同域系统的方式进行操作,实现自动登录,若否,则拒绝登录。通过设置信任列表,进一步实现了在跨域情况下,通过一次登录验证操作登录多个系统的功能。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一实施例的单点登录多系统的方法的流程图;

图2示出了根据本发明另一实施例的单点登录多系统的方法的流程图;

图3示出了根据本发明一实施例的单点登录多系统的装置的结构示意图;以及

图4示出了根据本发明另一实施例的单点登录多系统的装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

为解决上述技术问题,本发明实施例提出一种单点登录多系统的方法。图1示出了根据本发明一实施例的单点登录多系统的方法的流程图。参见图1,该方法应用于单点登录服务器,可以包括以下步骤1至步骤5。

步骤1,接收来自浏览器侧的对待登录系统的登录请求。

步骤2,判断浏览器侧是否存在在先系统完成登录后保存的当前cookie。

步骤3,若否,则发送验证请求至登录信息服务器,当登录信息服务器根据所接收的验证请求对输入的用户信息进行验证并通过后,接收登录信息服务器返回的验证通过信息,从登录信息服务器获取用户信息和与用户信息对应的用户唯一身份标识,将用户唯一身份标识写入待登录系统的cookie中,并将用户信息写入redis服务器,从而完成登录该待登录系统。

步骤4,若是,则比较待登录系统的父域名与当前cookie对应的系统的父域名是否相同。

步骤5,若相同,则读取当前cookie中保存的用户唯一身份标识,根据所读取的用户唯一身份标识从redis服务器拉取与该用户唯一身份标识对应的用户信息,并根据所拉取的用户信息将待登录系统的登录状态设置为已登录,从而实现对待登录系统的自动登录。

进一步地,该方法还包括采用上述步骤,实现对其他一个或多个待登录系统的自动登录。

本发明实施例提出的单点登录多系统的方法,实现了单一系统登录后,其他相关系统不必重复登录的功能。首先,在接收到来自浏览器侧的对待登录系统的登录请求后,判断出浏览器侧不存在在先系统完成登录后保存的当前cookie,则跳转至登录信息服务器,输入用户信息进行登录验证;通过验证登录成功后,从登录信息服务器获取用户信息和对应的用户唯一身份标识,将用户唯一身份标识写入该待登录系统的cookie中,并将用户信息写入redis服务器。然后,在接收到来自浏览器侧的对另一待登录系统的登录请求后,判断出此时浏览器侧存在前一系统完成登录后保存的当前cookie,比较当前待登录系统的父域名与当前cookie对应的前一系统的父域名是否相同;若相同,即,当前待登录系统与当前cookie对应的前一系统为同域系统,则读取当前cookie中保存的用户唯一身份标识,根据所读取的用户唯一身份标识从redis服务器拉取与该用户唯一身份标识对应的用户信息,并根据所拉取的用户信息将当前待登录系统的登录状态设置为已登录,从而实现对当前待登录系统的自动登录。通过根据在先系统完成登录后保存的cookie去获取用户的登录信息,进而自动登录与在先系统同域的其它相关系统,实现了在同域情况下,通过一次登录验证操作登录多个系统的功能。

上文提及的待登录系统与在先系统可以是以同一用户账号和密码进行登录的相关系统。

上文步骤3中,所提及的验证请求可以携带有待登录系统的url(uniformresourelocator,统一资源定位符)。登录信息服务器接收到该验证请求后,显示一个登录页面以供输入用户信息。然后,登录信息服务器对输入的用户信息进行验证,若通过,则生成一用户信息获取钥匙,并向单点登录服务器返回验证通过信息,其中,验证通过信息中携带有待登录系统的url和所生成的用户信息获取钥匙。进而,单点登录服务器在接收到验证通过信息后,调用其第一用户信息获取接口,向登录信息服务器发送携带该用户信息获取钥匙的第一用户信息获取请求,并接收登录信息服务器根据第一用户信息获取请求返回的与该用户信息获取钥匙对应的用户信息和用户唯一身份标识。此处,第一用户信息获取接口可以为get接口。进一步,为了确保请求获取用户信息的用户为刚刚登陆成功的用户,进而保证用户信息的安全,用户信息获取钥匙设置有有效时间,例如,有效时间为5-10秒。

在获取到用户信息和用户唯一身份标识后,单点登录服务器将用户唯一身份标识写入待登录系统的cookie中并保存,并且通过调用其指定写入接口将用户信息写入redis服务器。

redis(remotedictionaryserver,远程字典服务器)是一种可基于内存亦可持久化的日志型、高性能的key-value数据库,可支持多种存储的value类型,包括字符串(string)、链表(list)、集合(set)、有序集合(sortedset)和哈希(hash)类型。redis具有读写性能优异、支持数据持久化、支持主从复制、读写分离、数据结构丰富、可缓存消息、可设置过期时间等优点。

在本发明的可选实施例中,上文提及的用户唯一身份标识可以包括用户邮箱的md5值。相应地,用户信息可以包括用户登录账号和密码。

上文步骤4中,若判断出浏览器侧存在在先系统完成登录后保存的当前cookie,则比较待登录系统的父域名与当前cookie对应的系统的父域名是否相同。举例来说,假设待登录系统域名为test.abc.net,则其父域名为abc.net;当前cookie对应的系统的域名为hr.abc.cn,则其父域名为abc.cn。此时,比较abc.net与abc.cn是否相同。若相同,则继续执行步骤5,若不相同,则结束当前待登录系统的登录流程。

上文步骤5中,若待登录系统的父域名与当前cookie对应的系统的父域名相同,则读取当前cookie中保存的用户唯一身份标识。进而,调用单点登录服务器的第二用户信息获取接口,向redis服务器发送携带有所读取的用户唯一身份标识的第二用户信息获取请求。redis服务器接收到第二用户信息获取请求后,在自身查找与该用户唯一身份标识对应的用户信息,并将查找到的用户信息返回给单点登录服务器。

进一步地,为了增强用户信息的安全,redis服务器中写入的用户信息设置有过期时间,例如,过期时间可以设置为24小时,过期后,redis服务器中存储的用户信息将自动删除。这样,可能出现在redis服务器中没有所需获取的用户信息的情况。此时,在redis服务器接收到携带有所读取的用户唯一身份标识的第二用户信息获取请求后,若在自身查找到与该读取的用户唯一身份标识对应的用户信息,则直接将查找到的用户信息返回给单点登录服务器。进而,单点登录服务器根据所接收的用户信息将待登录系统的状态设置为已登录,从而实现对该待登录系统的自动登录。

在redis服务器接收到携带有所读取的用户唯一身份标识的第二用户信息获取请求后,若在自身未查找到与该读取的用户唯一身份标识对应的用户信息,则向单点登录服务器返回指示未获取成功的信息。单点登录服务器在接收到指示未获取成功的信息后,执行上述步骤3,即,发送验证请求至登录信息服务器,当登录信息服务器根据所接收的验证请求对输入的用户信息进行验证并通过后,接收登录信息服务器返回的验证通过信息,从登录信息服务器获取用户信息和与用户信息对应的用户唯一身份标识,将用户唯一身份标识写入待登录系统的cookie中,并将用户信息写入redis服务器,从而完成登录该待登录系统。

在本发明的可选实施例中,在步骤3中,从登录信息服务器获取了用户信息和与该用户信息对应的用户唯一身份标识之后,还可以将用户信息写入待登录系统的session中。

进一步地,在本待登录系统登录验证成功之后,且在本待登录系统的session失效之前,若需再次登录本待登录系统,则可以在执行步骤2,即,判断浏览器侧是否存在在先系统完成登录后保存的当前cookie之前,先判断是否存在本待登录系统的session。若存在,则读取本待登录系统的session中保存的用户信息,并根据该用户信息将本待登录系统的登录状态设置为已登录,从而实现自动登录。若不存在,则继续执行步骤2,即,判断浏览器侧是否存在在先系统完成登录后保存的当前cookie。

在根据本发明的另一实施例中,如图2所示,在执行步骤4之后,还可以包括以下步骤6。

若待登录系统的父域名与当前cookie对应的系统的父域名不同,则判断待登录系统的域名是否在指定信任列表中;若待登录系统的域名在指定信任列表中,则执行步骤5,即,读取当前cookie中保存的用户唯一身份标识,根据所读取的用户唯一身份标识从redis服务器拉取与该用户唯一身份标识对应的用户信息,并根据所拉取的用户信息将待登录系统的登录状态设置为已登录,从而实现对待登录系统的自动登录;若待登录系统的域名不在指定信任列表中,则拒绝登录,结束当前待登录系统的登录流程。

上文提及的指定信任列表可以由用户或单点登录服务器预先配置,在该指定信任列表中可以记录有以同一用户账号和密码进行登录、可信任的多个相关系统的域名。

在本发明的可选实施例中,为了提高信息传输的安全性,单点登录服务器与登录信息服务器和redis服务器之间的信息传输采用https协议进行。https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议更加安全。

以上介绍了图1所示实施例的各个环节的多种实现方式,下面将通过具体实施例来详细介绍本发明的单点登录多系统的方法的实现过程。

实施例一

在本发明的具体实施例一中,以单点登录以下三个系统为例进行说明:人力资源系统、工作日志系统和产品发布系统。

下面对本实施例提供的应用于单点登录服务器的一种单点登录多系统的方法进行具体说明。其中,为方便说明,假设人力资源系统、工作日志系统和产品发布系统为对于一用户来说可用同一用户账号和密码进行登录、可信任的相关系统,它们的域名分别为hr.abc.net,blog.abc.net和product.abc.cn。单点登录服务器中预先配置有信任列表,该信任列表中记录有人力资源系统、工作日志系统和产品发布系统的域名。

第一步,单点登录服务器接收来自浏览器侧的对人力资源系统的登录请求。

第二步,单点登录服务器判断浏览器侧是否存在在先系统完成登录后保存的当前cookie。由于人力资源系统为本次用户登录的首个系统,可判断出浏览器侧不存在在先系统完成登录后保存的当前cookie。

第三步,首先,单点登录服务器发送携带有待登录的人力资源系统的url的验证请求至登录信息服务器,从而登录信息服务器在接收到该验证请求后,显示登录页面供用户输入用户信息进行验证,并在验证通过后生成用户信息获取钥匙,并返回携带有待登录的人力资源系统的url和该用户信息获取钥匙的验证通过信息。然后,单点登录服务器在接收到验证通过信息后,调用其第一用户信息获取接口,向登录信息服务器发送携带该用户信息获取钥匙的第一用户信息获取请求,并接收登录信息服务器根据第一用户信息获取请求返回的与该用户信息获取钥匙对应的用户信息和用户唯一身份标识。最后,单点登录服务器将用户唯一身份标识写入人力资源系统的cookie中并保存,并调用其指定写入接口将用户信息写入redis服务器,从而完成登录人力资源系统。

第四步,单点登录服务器接收来自浏览器侧的对工作日志系统的登录请求。

第五步,单点登录服务器判断出浏览器侧存在作为在先系统的人力资源系统完成登录后保存的当前cookie。

第六步,单点登录服务器比较待登录的工作日志系统的父域名与当前cookie对应的在先系统(即,人力资源系统)的父域名是否相同。由于工作日志系统和人力资源系统父域名均为abc.net,可得出比较结果为两者的父域名相同,即,待登录的工作日志系统与当前cookie对应的人力资源系统为同域系统。

第七步,单点登录服务器读取当前cookie中保存的用户唯一身份标识,调用第二用户信息获取接口,向redis服务器发送携带有所读取的用户唯一身份标识的第二用户信息获取请求。redis服务器接收到第二用户信息获取请求后,在自身查找与该用户唯一身份标识对应的用户信息,并将查找到的用户信息返回给单点登录服务器。单点登录服务器根据所接收的用户信息将待登录的工作日志系统的状态设置为已登录,从而实现对工作日志系统的自动登录。

第八步,单点登录服务器接收来自浏览器侧的对产品发布系统的登录请求。

第九步,单点登录服务器判断出浏览器侧存在作为在先系统的人力资源系统完成登录后保存的当前cookie。

第十步,单点登录服务器比较待登录的产品发布系统的父域名与当前cookie对应的在先系统(即,人力资源系统)的父域名是否相同。由于产品发布系统的父域名为abc.cn,而人力资源系统的父域名为abc.net,可得出比较结果为两者的父域名不同,即,待登录的产品发布系统与当前cookie对应的人力资源系统为跨域系统。

第十一步,单点登录服务器判断出待登录的产品发布系统的域名在信任列表中,继而,单点登录服务器读取当前cookie中保存的用户唯一身份标识,调用第二用户信息获取接口,向redis服务器发送携带有所读取的用户唯一身份标识的第二用户信息获取请求。redis服务器接收到第二用户信息获取请求后,在自身查找与该用户唯一身份标识对应的用户信息,并将查找到的用户信息返回给单点登录服务器。单点登录服务器根据所接收的用户信息将待登录的产品发布系统的状态设置为已登录,从而实现对产品发布系统的自动登录,整个登录流程结束。

本实施例实现了单一系统登录后,其他相关系统不必重复登录的功能,并且支持同域和跨域的多个系统的情况。

需要说明的是,实际应用中,上述所有可选实施方式可以采用结合的方式任意组合,形成本发明的可选实施例,在此不再一一赘述。

基于同一发明构思,本发明实施例还提供了一种单点登录多系统的装置,应用于单点登录服务器,用于支持上述任意一个实施例或其组合所提供的单点登录多系统的方法。图3示出了根据本发明一实施例的单点登录多系统的装置的结构示意图。参见图3,该装置至少可以包括:登录请求接收模块310、cookie判断模块320、验证登录模块330、同域/跨域判断模块340和同域自动登录模块350。

现介绍本发明实施例的单点登录多系统的装置的各组成或器件的功能以及各部分间的连接关系:

登录请求接收模块310,适于执行步骤1:接收来自浏览器侧的对待登录系统的登录请求。

cookie判断模块320,与登录请求接收模块310连接,执行步骤2:判断浏览器侧是否存在在先系统完成登录后保存的当前cookie。

验证登录模块330,与cookie判断模块320连接,适于若浏览器侧不存在在先系统完成登录后保存的当前cookie,则执行步骤3:发送验证请求至登录信息服务器,当登录信息服务器根据所接收的验证请求对输入的用户信息进行验证并通过后,接收登录信息服务器返回的验证通过信息,从登录信息服务器获取用户信息和与用户信息对应的用户唯一身份标识,将用户唯一身份标识写入待登录系统的cookie中,并将用户信息写入redis服务器,从而完成登录该待登录系统。

同域/跨域判断模块340,与cookie判断模块320连接,适于若浏览器侧存在在先系统完成登录后保存的当前cookie,则执行步骤4:比较待登录系统的父域名与当前cookie对应的系统的父域名是否相同。

同域自动登录模块350,与同域/跨域判断模块340连接,适于若待登录系统的父域名与当前cookie对应的系统的父域名相同,则执行步骤5:读取当前cookie中保存的用户唯一身份标识,根据所读取的用户唯一身份标识从redis服务器拉取与该用户唯一身份标识对应的用户信息,并根据所拉取的用户信息将待登录系统的登录状态设置为已登录,从而实现对待登录系统的自动登录。

进一步地,还可以采用上述模块执行相应步骤,实现对其他一个或多个待登录系统的自动登录。

根据本发明的另一实施例中,如图4所示,图3中展示的单点登录多系统的装置还可以包括:

跨域自动登录模块460,与同域/跨域判断模块340连接,适于在同域/跨域判断模块340执行步骤4之后,执行步骤6:若待登录系统的父域名与当前cookie对应的系统的父域名不同,则判断待登录系统的域名是否在指定信任列表中;若待登录系统的域名在指定信任列表中,则触发同域自动登录模块350执行步骤5;若待登录系统的域名不在指定信任列表中,则拒绝登录,结束当前待登录系统的登录流程。

在一个可选实施例中,验证请求携带有待登录系统的统一资源定位符url;

验证通过信息携带有待登录系统的url和登录信息服务器在对输入的用户信息进行验证并通过后生成的用户信息获取钥匙;

验证登录模块330还适于:

调用单点登录服务器的第一用户信息获取接口,向登录信息服务器发送携带用户信息获取钥匙的第一用户信息获取请求,并接收登录信息服务器根据第一用户信息获取请求返回的与用户信息获取钥匙对应的用户信息和用户唯一身份标识。

在一个可选实施例中,验证登录模块330还适于:

通过调用单点登录服务器的指定写入接口将用户信息写入redis服务器。

在一个可选实施例中,同域自动登录模块350还适于:

调用单点登录服务器的第二用户信息获取接口,向redis服务器发送携带有所读取的用户唯一身份标识的第二用户信息获取请求,并接收redis服务器根据第二用户信息获取请求返回的与该用户唯一身份标识对应的用户信息。

在一个可选实施例中,redis服务器中写入的用户信息设置有过期时间,此时,

同域自动登录模块350还适于:

当redis服务器在接收到携带有所读取的用户唯一身份标识的第二用户信息获取请求后,在自身查找到与该读取的用户唯一身份标识对应的用户信息时,接收redis服务器返回的与该用户唯一身份标识对应的用户信息;

当redis服务器在接收到携带有所读取的用户唯一身份标识的第二用户信息获取请求后,在自身未查找到与该读取的用户唯一身份标识对应的用户信息时,接收redis服务器返回的指示未获取成功的信息,并触发验证登录模块330执行步骤3。

在一个可选实施例中,验证登录模块330还适于:

从登录信息服务器获取用户信息和与用户信息对应的用户唯一身份标识之后,将用户信息写入待登录系统的session中。

进一步地,如图4所示,图3中展示的单点登录多系统的装置还可以包括:

基于session的登录模块470,与登录请求接收模块310和cookie判断模块320相连接,适于:在登录请求接收模块310执行步骤1之后且cookie判断模块320执行步骤2之前,判断是否存在待登录系统的session;

若存在,则读取待登录系统的session中保存的用户信息;

根据用户信息将待登录系统的登录状态设置为已登录,从而实现自动登录待登录系统;

若不存在,则触发cookie判断模块320执行步骤2。

在一个可选实施例中,用户唯一身份标识包括用户邮箱的md5值。相应地,用户信息包括用户登录账号和密码。

在一个可选实施例中,该装置与登录信息服务器和redis服务器之间的信息传输采用https协议进行。

基于同一发明构思,本发明实施例还提供了一种计算机存储介质。该计算机存储介质存储有计算机程序代码,当该计算机程序代码在计算设备上运行时,导致计算设备执行根据上述任意一个实施例或其组合所述的单点登录多系统的方法。

基于同一发明构思,本发明实施例还提供了一种计算设备。该计算设备可以包括:

处理器;以及

存储有计算机程序代码的存储器;

当该计算机程序代码被处理器运行时,导致该计算设备执行根据上述任意一个实施例或其组合所述的单点登录多系统的方法。

根据上述任意一个可选实施例或多个可选实施例的组合,本发明实施例能够达到如下有益效果:

本发明实施例提出的单点登录多系统的方法和装置,实现了单一系统登录后,其他相关系统不必重复登录的功能。首先,在接收到来自浏览器侧的对待登录系统的登录请求后,判断出浏览器侧不存在在先系统完成登录后保存的当前cookie,则跳转至登录信息服务器,输入用户信息进行登录验证;通过验证登录成功后,从登录信息服务器获取用户信息和对应的用户唯一身份标识,将用户唯一身份标识写入该待登录系统的cookie中,并将用户信息写入redis服务器。然后,在接收到来自浏览器侧的对另一待登录系统的登录请求后,判断出此时浏览器侧存在前一系统完成登录后保存的当前cookie,比较当前待登录系统的父域名与当前cookie对应的前一系统的父域名是否相同;若相同,即,当前待登录系统与当前cookie对应的前一系统为同域系统,则读取当前cookie中保存的用户唯一身份标识,根据所读取的用户唯一身份标识从redis服务器拉取与该用户唯一身份标识对应的用户信息,并根据所拉取的用户信息将当前待登录系统的登录状态设置为已登录,从而实现对当前待登录系统的自动登录。通过根据在先系统完成登录后保存的cookie去获取用户的登录信息,进而自动登录与在先系统同域的其它相关系统,实现了在同域情况下,通过一次登录验证操作登录多个系统的功能。

进一步地,若比较得出当前待登录系统的父域名与当前cookie对应的前一系统的父域名不同,即,当前待登录系统与当前cookie对应的前一系统为跨域系统,则判断当前待登录系统的域名是否在指定信任列表中,若是,则按照同域系统的方式进行操作,实现自动登录,若否,则拒绝登录。通过设置信任列表,进一步实现了在跨域情况下,通过一次登录验证操作登录多个系统的功能。

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

另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。

本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom)、随机存取存储器(ram),磁碟或者光盘等各种可以存储程序代码的介质。

或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。

根据本发明实施例的一方面,提供了a1.一种单点登录多系统的方法,应用于单点登录服务器,包括:

步骤1:接收来自浏览器侧的对待登录系统的登录请求;

步骤2:判断所述浏览器侧是否存在在先系统完成登录后保存的当前cookie;

若否,则执行步骤3:发送验证请求至登录信息服务器,当所述登录信息服务器根据所接收的验证请求对输入的用户信息进行验证并通过后,接收所述登录信息服务器返回的验证通过信息,从所述登录信息服务器获取所述用户信息和与所述用户信息对应的用户唯一身份标识,将所述用户唯一身份标识写入所述待登录系统的cookie中,并将所述用户信息写入redis服务器,从而完成登录所述待登录系统;

若是,则执行步骤4:比较所述待登录系统的父域名与所述当前cookie对应的系统的父域名是否相同;

若相同,则执行步骤5:读取所述当前cookie中保存的用户唯一身份标识,根据所读取的用户唯一身份标识从所述redis服务器拉取与该用户唯一身份标识对应的用户信息,并根据所拉取的用户信息将所述待登录系统的登录状态设置为已登录,从而实现对所述待登录系统的自动登录;

其中,还采用上述步骤,实现对其他一个或多个待登录系统的自动登录。

a2.根据a1所述的方法,其中,在步骤4之后,还包括:

步骤6:若所述待登录系统的父域名与所述当前cookie对应的系统的父域名不同,则判断所述待登录系统的域名是否在指定信任列表中;

若所述待登录系统的域名在所述指定信任列表中,则执行步骤5;

若所述待登录系统的域名不在所述指定信任列表中,则拒绝登录。

a3.根据a1或a2所述的方法,其中,在步骤3中,所述验证请求携带有所述待登录系统的统一资源定位符url;

所述验证通过信息携带有所述待登录系统的url和所述登录信息服务器在对输入的用户信息进行验证并通过后生成的用户信息获取钥匙;

从所述登录信息服务器获取所述用户信息和对应的用户唯一身份标识,包括:

调用所述单点登录服务器的第一用户信息获取接口,向所述登录信息服务器发送携带所述用户信息获取钥匙的第一用户信息获取请求,并接收所述登录信息服务器根据所述第一用户信息获取请求返回的与所述用户信息获取钥匙对应的用户信息和用户唯一身份标识。

a4.根据a1-a3中任一项所述的方法,其中,在步骤3中,将所述用户信息写入redis服务器,包括:

通过调用所述单点登录服务器的指定写入接口将所述用户信息写入redis服务器。

a5.根据a1-a4中任一项所述的方法,其中,在步骤5中,根据所读取的用户唯一身份标识从所述redis服务器拉取与该用户唯一身份标识对应的用户信息,包括:

调用所述单点登录服务器的第二用户信息获取接口,向所述redis服务器发送携带有所读取的用户唯一身份标识的第二用户信息获取请求,并接收所述redis服务器根据所述第二用户信息获取请求返回的与该用户唯一身份标识对应的用户信息。

a6.根据a5所述的方法,其中,所述redis服务器中写入的用户信息设置有过期时间,此时,

接收所述redis服务器根据所述第二用户信息获取请求返回的与该用户唯一身份标识对应的用户信息,包括:

当所述redis服务器在接收到所述携带有所读取的用户唯一身份标识的第二用户信息获取请求后,在自身查找到与该读取的用户唯一身份标识对应的用户信息时,接收所述redis服务器返回的与该用户唯一身份标识对应的用户信息;

当所述redis服务器在接收到所述携带有所读取的用户唯一身份标识的第二用户信息获取请求后,在自身未查找到与该读取的用户唯一身份标识对应的用户信息时,接收所述redis服务器返回的指示未获取成功的信息,并执行步骤3。

a7.根据a1-a6中任一项所述的方法,其中,在步骤3中,从所述登录信息服务器获取所述用户信息和与所述用户信息对应的用户唯一身份标识之后,还包括:

将所述用户信息写入所述待登录系统的session中。

a8.根据a7所述的方法,其中,在步骤1之后且步骤2之前,还包括:

判断是否存在所述待登录系统的session;

若存在,则读取所述待登录系统的session中保存的用户信息;

根据所述用户信息将所述待登录系统的登录状态设置为已登录,从而实现自动登录所述待登录系统;

若不存在,则执行步骤2。

a9.根据a1-a8中任一项所述的方法,其中,所述用户唯一身份标识包括用户邮箱的md5值;

所述用户信息包括用户登录账号和密码。

a10.根据a1-a9中任一项所述的方法,其中,与所述登录信息服务器和所述redis服务器之间的信息传输采用https协议进行。

根据本发明实施例的另一方面,还提供了b11.一种单点登录多系统的装置,应用于单点登录服务器,包括:

登录请求接收模块,适于执行步骤1:接收来自浏览器侧的对待登录系统的登录请求;

cookie判断模块,适于执行步骤2:判断所述浏览器侧是否存在在先系统完成登录后保存的当前cookie;

验证登录模块,适于若所述浏览器侧不存在在先系统完成登录后保存的当前cookie,则执行步骤3:发送验证请求至登录信息服务器,当所述登录信息服务器根据所接收的验证请求对输入的用户信息进行验证并通过后,接收所述登录信息服务器返回的验证通过信息,从所述登录信息服务器获取所述用户信息和与所述用户信息对应的用户唯一身份标识,将所述用户唯一身份标识写入所述待登录系统的cookie中,并将所述用户信息写入redis服务器,从而完成登录所述待登录系统;

同域/跨域判断模块,适于若所述浏览器侧存在在先系统完成登录后保存的当前cookie,则执行步骤4:比较所述待登录系统的父域名与所述当前cookie对应的系统的父域名是否相同;以及

同域自动登录模块,适于若所述待登录系统的父域名与所述当前cookie对应的系统的父域名相同,则执行步骤5:读取所述当前cookie中保存的用户唯一身份标识,根据所读取的用户唯一身份标识从所述redis服务器拉取与该用户唯一身份标识对应的用户信息,并根据所拉取的用户信息将所述待登录系统的登录状态设置为已登录,从而实现对所述待登录系统的自动登录;

其中,还采用上述模块执行相应步骤,实现对其他一个或多个待登录系统的自动登录。

b12.根据b11所述的装置,其中,还包括:

跨域自动登录模块,适于在所述同域/跨域判断模块执行所述步骤4之后,执行步骤6:若所述待登录系统的父域名与所述当前cookie对应的系统的父域名不同,则判断所述待登录系统的域名是否在指定信任列表中;

若所述待登录系统的域名在所述指定信任列表中,则触发所述同域自动登录模块执行步骤5;

若所述待登录系统的域名不在所述指定信任列表中,则拒绝登录。

b13.根据b11或b12所述的装置,其中,所述验证请求携带有所述待登录系统的统一资源定位符url;

所述验证通过信息携带有所述待登录系统的url和所述登录信息服务器在对输入的用户信息进行验证并通过后生成的用户信息获取钥匙;

所述验证登录模块还适于:

调用所述单点登录服务器的第一用户信息获取接口,向所述登录信息服务器发送携带所述用户信息获取钥匙的第一用户信息获取请求,并接收所述登录信息服务器根据所述第一用户信息获取请求返回的与所述用户信息获取钥匙对应的用户信息和用户唯一身份标识。

b14.根据b11-b13中任一项所述的装置,其中,所述验证登录模块还适于:

通过调用所述单点登录服务器的指定写入接口将所述用户信息写入redis服务器。

b15.根据b11-b14中任一项所述的装置,其中,所述同域自动登录模块还适于:

调用所述单点登录服务器的第二用户信息获取接口,向所述redis服务器发送携带有所读取的用户唯一身份标识的第二用户信息获取请求,并接收所述redis服务器根据所述第二用户信息获取请求返回的与该用户唯一身份标识对应的用户信息。

b16.根据b15所述的装置,其中,所述redis服务器中写入的用户信息设置有过期时间,此时,

所述同域自动登录模块还适于:

当所述redis服务器在接收到所述携带有所读取的用户唯一身份标识的第二用户信息获取请求后,在自身查找到与该读取的用户唯一身份标识对应的用户信息时,接收所述redis服务器返回的与该用户唯一身份标识对应的用户信息;

当所述redis服务器在接收到所述携带有所读取的用户唯一身份标识的第二用户信息获取请求后,在自身未查找到与该读取的用户唯一身份标识对应的用户信息时,接收所述redis服务器返回的指示未获取成功的信息,并触发所述验证登录模块执行步骤3。

b17.根据b11-b16中任一项所述的装置,其中,所述验证登录模块还适于:

从所述登录信息服务器获取所述用户信息和与所述用户信息对应的用户唯一身份标识之后,将所述用户信息写入所述待登录系统的session中。

b18.根据b17所述的装置,其中,还包括:

基于session的登录模块,适于:在所述登录请求接收模块执行步骤1之后且所述cookie判断模块执行步骤2之前,判断是否存在所述待登录系统的session;

若存在,则读取所述待登录系统的session中保存的用户信息;

根据所述用户信息将所述待登录系统的登录状态设置为已登录,从而实现自动登录所述待登录系统;

若不存在,则触发所述cookie判断模块执行步骤2。

b19.根据b11-b18中任一项所述的装置,其中,所述用户唯一身份标识包括用户邮箱的md5值;

所述用户信息包括用户登录账号和密码。

b20.根据b11-b19中任一项所述的装置,其中,所述装置与所述登录信息服务器和所述redis服务器之间的信息传输采用https协议进行。

根据本发明实施例的又一方面,还提供了c21.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据a1-a10中任一项所述的单点登录多系统的方法。

根据本发明实施例的再一方面,还提供了d22.一种计算设备,包括:

处理器;以及

存储有计算机程序代码的存储器;

当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行根据a1-a10中任一项所述的单点登录多系统的方法。

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