单点登录方法及系统、电子设备与流程

文档序号:12917441阅读:442来源:国知局
单点登录方法及系统、电子设备与流程

本公开涉及计算机网络技术领域,尤其涉及一种单点登录方法及系统、电子设备。



背景技术:

单点登录(singlesign-on,简称sso)是指在多个应用系统中,用户只需进行一次身份认证,即可访问所有相互信任的应用系统。cas(centralauthenticationservice)是一种针对计算机网络应用的单点登录系统,cas服务器负责对用户的身份进行认证,cas客户端负责处理对应用系统中受保护资源的访问请求。

目前,利用cas实现单点登录的方法主要包括采用身份票据和采用令牌两种形式。

第一,如图1所示,采用身份票据(ticket)的形式。具体而言,用户请求访问cas客户端即应用系统的服务资源;cas客户端重定向到cas服务器,通过cas服务器对用户的身份进行认证;cas服务器随机生成一个身份票据ticket传递给cas客户端;cas客户端将身份票据ticket传递给cas服务器进行验证;cas服务器在验证成功后将认证结果返回至cas客户端。基于这种方式,若要实现单点退出,可将cas服务器和应用系统置于同一个域中,当一个应用系统退出时,则会清除同域名下的所有cookie,从而达到统一退出的目的,但是这种方式无法做到跨域的单点退出。若要实现跨域的单点退出,cas服务器需要记录各个应用系统的注册信息,使得所有接入的子系统都同步退出当前登录会话,但这种方式对于应用系统的改造量较大,需要开放接口给cas服务器以备通知调用。

第二,如图2所示,采用令牌(token)的形式。具体而言,当用户请求访问应用系统a的服务资源时,应用系统a的cas服务器对用户身份进行验证,并在验证成功后生成一令牌返回给用户;当用户请求访问应用系统b的服务资源时,将接收到的令牌传递给应用系统b,应用系统b的cas服务器通过解密该令牌以获取用户信息,从而实现用户登录。基于这种方式,采用令牌进行验证的好处是,各个服务器都通过统一的密钥对令牌进行加密解密,因此具有安全性高、稳定性好、以及性能消耗低等优点,但必须保证各台应用服务器同域,无法解决跨域访问的问题。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开的目的在于提供一种单点登录方法及系统、电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开的一个方面,提供一种单点登录方法,用于实现跨域应用系统间的会话共享;所述单点登录方法包括:

接收第一应用系统发送的携带有第一应用标识的认证请求,并对所述第一应用标识进行验证;

根据所述第一应用标识在服务器缓存中查找对应的会话,并在查找到所述会话后对所述会话对应的会话标识进行验证;

根据所述第一应用标识以及所述会话标识生成对应于所述第一应用系统的第一访问令牌,并将所述会话标识以及所述第一访问令牌发送至所述第一应用系统;

其中,所述会话由第二应用系统建立,且所述第一应用系统和所述第二应用系统为相互信任的系统;所述第一应用系统、所述第二应用系统、以及服务器的域名均不相同。

本公开的一种示例性实施例中,所述单点登录方法还包括:

接收第二应用系统发送的携带有第二应用标识以及用户登录信息的认证请求,并对所述第二应用标识以及所述用户登录信息进行验证;

根据所述第二应用标识生成一会话标识以及对应于所述第二应用系统的第二访问令牌且存储于服务器缓存中,并将所述会话标识以及所述第二访问令牌发送至所述第二应用系统;

接收所述第二应用系统根据所述会话标识以及所述第二访问令牌生成的验证信息,并对所述验证信息进行验证;

响应验证结果返回一登录页面或者返回所述第二应用系统。

本公开的一种示例性实施例中,所述生成一会话标识以及对应于所述第二应用系统的第二访问令牌包括:

根据所述第二应用标识查找预存的对应于所述第二应用标识的私钥;

根据所述第二应用标识以及所述私钥生成所述会话标识以及对应于所述第二应用系统的第二访问令牌,且所述会话标识以及所述第二访问令牌均具有时效性。

本公开的一种示例性实施例中,所述第二应用标识、所述会话标识、以及所述第二访问令牌均通过所述私钥进行加密。

本公开的一种示例性实施例中,所述将所述会话标识以及所述第二访问令牌发送至所述第二应用系统包括:

通过安全超文本传输协议的形式将加密后的所述会话标识以及所述第二访问令牌发送至所述第二应用系统。

本公开的一种示例性实施例中,所述接收所述第二应用系统根据所述会话标识以及所述第二访问令牌生成的验证信息,并对所述验证信息进行验证包括:

接收所述第二应用系统通过安全超文本传输协议的形式发送的根据解密后的所述会话标识以及所述第二访问令牌所生成的验证信息;

根据所述服务器缓存中存储的所述第二访问令牌对所述验证信息中的第二访问令牌进行验证。

本公开的一种示例性实施例中,所述响应验证结果返回一登录页面或者返回所述第二应用系统包括:

验证失败时,响应所述验证失败的结果返回一所述登录页面以重新登录;或者,

验证成功时,响应所述验证成功的结果返回所述第二应用系统以通过认证。

本公开的一种示例性实施例中,所述在服务器缓存中查找对应的会话,并在查找到所述会话后对所述会话对应的会话标识进行验证包括:

查找根据所述第二应用标识生成的所述会话标识,并对所述会话标识的时效性进行验证。

本公开的一种示例性实施例中,所述会话标识以及所述第二访问令牌还存储于所述第二应用系统的缓存中。

本公开的一种示例性实施例中,所述会话标识以及所述第一访问令牌还存储于所述第一应用系统的缓存中。

本公开的一种示例性实施例中,所述单点登录方法还包括:

在接收第二应用系统发送的携带有第二应用标识以及用户登录信息的认证请求之前,判断所述第二应用系统的缓存中是否存在会话标识;

以及,在接收第一应用系统发送的携带有第一应用标识的认证请求之前,判断所述第一应用系统的缓存中是否存在会话标识。

根据本公开的一个方面,提供一种单点登录系统,用于实现跨域应用系统间的会话共享,所述单点登录系统包括:

第一接收模块,用于接收第一应用系统发送的携带有第一应用标识的认证请求,并对所述第一应用标识进行验证;

查找模块,用于根据所述第一应用标识在服务器缓存中查找对应的会话,并在查找到所述会话后对所述会话对应的会话标识进行验证;

第一处理模块,用于根据所述第一应用标识以及所述会话标识生成对应于所述第一应用系统的第一访问令牌,并将所述会话标识以及所述第一访问令牌发送至所述第一应用系统;

其中,所述会话由第二应用系统建立,且所述第二应用系统和所述第一应用系统为相互信任的系统;所述第二应用系统、所述第一应用系统、以及服务器的域名均不相同。

本公开的一种示例性实施例中,所述单点登录系统还包括:

第二接收模块,用于接收第二应用系统发送的携带有第二应用标识以及用户登录信息的认证请求,并对所述第二应用标识以及所述用户登录信息进行验证;

第二处理模块,用于根据所述第二应用标识生成一会话标识以及对应于所述第二应用系统的第二访问令牌且存储于服务器缓存中,并将所述会话标识以及所述第二访问令牌发送至所述第二应用系统;

所述第二接收模块还用于接收所述第二应用系统根据所述会话标识以及所述第二访问令牌生成的验证信息,并对所述验证信息进行验证;

所述第二处理模块还用于响应验证结果返回一登录页面或者返回所述第二应用系统。

根据本公开的一个方面,提供一种电子设备,包括:

处理器;以及

存储器,用于存储所述处理器的可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行上述的单点登录方法。

本示例实施方式所提供的单点登录方法及系统,在用户请求访问第二应用系统的受保护资源时建立起与服务器之间的会话,并将该会话对应的会话标识存储在服务器域名下的缓存数据中,在用户请求访问第一应用系统的受保护资源时,服务器会根据已存在的会话标识进行判断和授权,避免重新登录验证,从而实现跨域应用系统间的访问授权。这样一来,相互信任的应用系统之间可以通过会话共享的方式实现跨域应用系统的访问授权,并能达到统一退出的效果;在工程实现方面,可将该单点登录方法的流程代码封装至一过滤器,仅引入单点系统共用的组件,即可达到全局控制的作用,从而避免了对应用系统的大量改造。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性示出现有技术中采用票据形式的单点登录方法的交互关系图;

图2示意性示出现有技术中采用令牌形式的单点登录方法的交互关系图;

图3示意性示出本公开示例性实施例中单点登录方法的步骤流程图一;

图4示意性示出本公开示例性实施例中单点登录方法的的步骤流程图二;

图5示意性示出本公开示例性实施例中单点登录方法的交互关系图;

图6示意性示出本公开示例性实施例中的电子设备的模块示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

本示例实施方式提供了一种单点登录方法,用于实现跨域应用系统间的会话共享。具体的,第一应用系统、第二应用系统、以及服务器的域名各不相同,且第一应用系统和第二应用系统为相互信任的应用系统;其中,第一应用系统的域名设为b.com,第二应用系统的域名设为a.com,服务器的域名设为c.com。

基于此,如图3所示,所述单点登录方法具体可以包括以下步骤:

s11、接收第一应用系统发送的携带有第一应用标识的认证请求,并对所述第一应用标识进行验证;

s12、根据所述第一应用标识在服务器缓存中查找对应的会话,并在查找到所述会话后对所述会话对应的会话标识进行验证;

s13、根据所述第一应用标识以及所述会话标识生成对应于所述第一应用系统的第一访问令牌,并将所述会话标识以及所述第一访问令牌发送至所述第一应用系统。

其中,所述会话由第二应用系统在上述步骤之前建立完成,且该会话对应的会话标识存储于服务器域名下的缓存中。

本示例实施方式所提供的单点登录方法,首先通过第二应用系统建立起与服务器之间的会话,并将该会话对应的会话标识存储在服务器域名下的缓存数据中,在用户请求访问第一应用系统的受保护资源时,服务器会根据已存在的会话标识进行判断和授权,避免重新登录验证,从而实现跨域应用系统间的访问授权。这样一来,相互信任的应用系统之间可以通过会话共享的方式实现跨域应用系统的访问授权,并能达到统一退出的效果;在工程实现方面,可将该单点登录方法的流程代码封装至一过滤器,仅引入单点系统共用的组件,即可达到全局控制的作用,从而避免了对应用系统的大量改造。

在本示例实施方式的单点登录方法中,如图4所示,所述第二应用系统建立会话的具体过程可以包括以下步骤:

s21、接收第二应用系统发送的携带有第二应用标识以及用户登录信息的认证请求,并对所述第二应用标识以及所述用户登录信息进行验证;

s22、根据所述第二应用标识生成一会话标识以及对应于所述第二应用系统的第二访问令牌且存储于服务器缓存中,并将所述会话标识以及所述第二访问令牌发送至所述第二应用系统;

s23、接收所述第二应用系统根据所述会话标识以及所述第二访问令牌生成的验证信息并对所述验证信息进行验证;

s24、响应验证结果返回一登录页面或者返回所述第二应用系统。

这样一来,在用户请求访问第二应用系统的受保护资源时,可通过服务器与第二应用系统之间反复传递令牌并进行验证,以实现所述会话的建立。在此基础上,当第一应用系统需要授权访问受保护资源时,即可根据第二应用系统在服务器域名下所建立的会话进行判断和授权,从而避免重新登录验证。

下面结合图5对本示例实施方式所提供的单点登录方法进行详细的解释说明。其中,图5为用户(浏览器)、第一应用系统、第二应用系统、以及服务器之间的交互关系图。

在步骤s21中,接收第二应用系统发送的携带有第二应用标识以及用户登录信息的认证请求,并对所述第二应用标识以及所述用户登录信息进行验证。

在本示例实施方式中,第二应用标识(clientid2)是指cas服务器为第二应用系统分配的标识信息,具体为用于区分各个应用系统接入的编号。用户登录信息是指用户请求访问第二应用系统的受保护资源时在登录页面输入的信息,其至少应该包括用户名和密码,当然还可以包括验证码等其它信息。

在此基础上,所述步骤s21具体可以包括:

s21a、用户在浏览器页面请求访问第二应用系统的受保护资源;其中,该受保护资源需要经过授权才可以访问。

s21b、第二应用系统在本系统内判断是否存在该用户的会话信息;即,第二应用系统在本系统的a.com域名下查找是否存在有会话标识(sessionid)的cookie缓存。

s21c、如果不存在则视为初次登录,此时返回一由cas服务器提供的统一登录页面,可例如,在登录地址后添加第二应用系统的第二应用标识(clientid2)的url参数。

s21d、用户在浏览器的登录页面输入用户名和密码等信息后向第二应用系统提交登录请求。

s21e、第二应用系统获取cas服务器为自己分配的第二应用标识(clientid2)。

s21f、第二应用系统将第二应用标识(clientid2)以及用户在登录页面输入的信息发送至cas服务器,以待cas服务器对其进行验证。

s21g、cas服务器对第二应用系统的第二应用标识(clientid2)的合法性进行验证,若验证失败直接返回系统错误的页面,若验证成功再对用户登录信息进行验证,在用户登录信息验证正确之后方可进入后续步骤。

举例来说,一新闻应用和一视频应用为相互信任的两个应用系统,且二者连接至同一服务器,该新闻应用系统的域名为a.com,该视频应用系统的域名为b.com,该服务器的域名为c.com。在此情况下,用户abc请求访问该新闻应用系统的受保护资源,且用户abc并未登录与该新闻应用系统相互信任的其它任何系统,那么该新闻应用系统的域名a.com下便不存在用户abc的会话标识的cookie,即为初次登录,此时返回一登录页面并可例如在登录地址后添加该新闻应用系统的应用标识clientid-news的url参数。用户abc在登录页面输入用户名及密码等相关信息后向该新闻应用系统提交登录信息,此时该新闻应用系统获取服务器为其配置的应用标识clientid-news,并将该应用标识clientid-news以及用户abc的登录信息一起发送至服务器端,由服务器进行验证。服务器首先会验证该新闻应用系统的应用标识clientid-news的合法性,若不合法则会返回一系统错误的提示,若合法则再验证用户abc的登录信息是否正确。

在步骤s22中,根据所述第二应用标识生成一会话标识以及对应于所述第二应用系统的第二访问令牌且存储于服务器缓存中,并将所述会话标识以及所述第二访问令牌发送至所述第二应用系统。

在本示例实施方式中,会话标识(sessionid)是指cas服务器与用户之间所建立的会话的标识信息。第二访问令牌(accesstoken2)是指用户访问第二应用系统的受保护资源的通行证,其具有一定的有效期,且每和cas服务器交互一次,有效期则刷新一次。需要注意的是:访问令牌(accesstoken)是根据应用系统的应用标识(clientid)随机生成且与之绑定的,其它接入的cas客户端或应用系统无法共用。

在此基础上,所述步骤s22可例如,包括:

s22a、cas服务器根据第二应用标识(clientid2)在服务器中查找预先存储的对应于该第二应用标识(clientid2)的私钥(clientprivatekey)。

这里需要说明的是:cas服务器端和应用系统端分别存放有同一份私钥。在实际应用中,通常使用des对称加密算法对访问令牌(accesstoken)进行加密和解密,以保证访问令牌(accesstoken)的不可篡改性。未经cas服务器授权的应用系统,不可直接通过传递访问令牌(accesstoken)来访问系统。

s22b、根据该私钥(clientprivatekey)和第二应用标识(clientid2)生成会话标识(sessionid)以及对应于所述第二应用系统的第二访问令牌(accesstoken1),且第二应用标识(clientid2)、会话标识(sessionid)、第二访问令牌(accesstoken1)、以及时间戳均通过私钥进行加密;其中,会话标识(sessionid)和第二访问令牌(accesstoken1)均具有时效性。

s22c、cas服务器将加密后的会话标识(sessionid)和第二访问令牌(accesstoken1)存储在服务器的c.com域名下的cookie缓存中。

s22d、cas服务器将加密后的会话标识(sessionid)和第二访问令牌(accesstoken1)通过https安全超文本传输协议的形式返回给第二应用系统。

s22e、第二应用系统在接收到会话标识(sessionid)和第二访问令牌(accesstoken1)后验证数据的完整性。

s22f、第二应用系统创建一会话,并将接收到的会话标识(sessionid)和第二访问令牌(accesstoken1)存储于第二应用系统的a.com域名下的cookie缓存中。

举例来说,服务器在对新闻应用系统的应用标识clientid-news以及用户abc的登录信息验证通过后,便会根据新闻应用系统的应用标识clientid-news在服务器中查找预存的与之对应的私钥,从而生成相应的会话标识sessionid以及对应于该新闻应用系统的访问令牌accesstoken-news,可例如,通过私钥对该新闻应用系统的应用标识clientid-news和访问令牌accesstoken-news、会话标识(sessionid)、以及时间戳进行加密。随后服务器将加密后的新闻应用系统的访问令牌accesstoken-news和会话标识sessionid存储在服务器的域名c.com下的cookie缓存中,并通过https安全超文本传输协议的形式返回给新闻应用系统。该新闻应用系统在接收到访问令牌accesstoken-news和会话标识sessionid之后需要对其解密并验证数据的完整性,随后创建一会话session,可例如,将会话标识sessionid存储于该新闻应用系统的a.com域名下的cookie缓存中、将访问令牌accesstoken-news存储于该会话session中,且该会话session中还需存放会话标识sessionid与访问令牌accesstoken-news的映射关系。

在步骤s23中,接收所述第二应用系统根据所述会话标识以及所述第二访问令牌生成的验证信息并对所述验证信息进行验证。

在本示例实施方式中,第二应用系统在接收到会话标识以及第二访问令牌后,需要再次定向到cas服务器对其进行验证,只有验证通过才可以获得授权访问第二应用系统的受保护资源。

在此基础上,所述步骤s23具体可以包括:

s23a、接收所述第二应用系统通过https安全超文本传输协议的形式发送的根据解密后的所述会话标识以及所述第二访问令牌所生成的验证信息;

s23b、根据所述服务器缓存中存储的所述第二访问令牌对所述验证信息中的第二访问令牌进行验证,其包括验证第二访问令牌是否被篡改或者到期。

举例来说,新闻应用系统根据解密后的访问令牌accesstoken-news和会话标识sessionid生成验证信息,再通过https安全超文本传输协议的形式发送给服务器,此时服务器调取其域名c.com下的cookie缓存中的访问令牌accesstoken-news作为参考,通过对比校验该验证信息中的访问令牌accesstoken-news是否被篡改以及是否到期等。

在步骤s24中,响应验证结果返回一登录页面或者返回所述第二应用系统。

具体而言,当第二访问令牌被篡改则验证失败,或者当第二访问令牌到期则表示令牌失效,说明用户已经退出,此时应返回一登录页面以重新登录;相反的,当第二访问令牌未被篡改且未到期时则验证成功,此时应返回第二应用系统以通过认证,第二应用系统向用户展示其受保护资源。

举例来说,当服务器对新闻应用系统发送的验证信息验证通过后,便会返回该新闻应用系统以示认证通过,此时新闻应用系统进行后续的业务流程,将其受保护资源展示给用户。

基于上述步骤s21-s24完成了第二应用系统的认证授权。通过第二应用系统建立起了用户与cas服务器之间的会话,此时在cas服务器的c.com域名下的cookie缓存以及第二应用系统的a.com域名下的cookie缓存中均存储有该会话对应的会话标识sessionid。

在步骤s11中,接收第一应用系统发送的携带有第一应用标识的认证请求并对所述第一应用标识进行验证。

在本示例实施方式中,第一应用标识(clientid1)是指cas服务器为第一应用系统分配的标识信息,具体为用于区分各个应用系统接入的编号。

在此基础上,所述步骤s11具体可以包括:

s11a、用户在浏览器页面请求访问第一应用系统的受保护资源;其中,该受保护资源需要经过授权才可以访问。

s11b、第一应用系统在本系统内判断是否存在该用户的会话信息;即,第一应用系统在本系统的b.com域名下查找是否存在有会话标识(sessionid)的cookie缓存。

s11c、如果不存在,则将第一应用系统的第一应用标识(clientid1)传递至http头信息中以重定向至cas服务器,并将第一应用标识(clientid1)发送至cas服务器以待验证。

s11d、cas服务器对第一应用系统的第一应用标识(clientid1)的合法性进行验证,若验证失败则返回系统错误的页面,若验证成功则进入后续步骤。

举例来说,用户abc在请求访问新闻应用系统的受保护资源之后,在未退出的情况下又请求访问与该新闻应用系统相互信任的视频应用系统的受保护资源。此时该视频应用系统在系统内的c.com域名下查找是否存在用户abc的会话标识(sessionid)的cookie缓存,如果不存在,该视频应用系统获取服务器为其配置的应用标识clientid-live,并将该应用标识clientid-live发送至服务器以待验证。服务器首先会验证该视频应用系统的应用标识clientid-live的合法性,若不合法则会返回一系统错误的提示,若合法则进行后续步骤。

在步骤s12中,根据所述第一应用标识在所述服务器缓存中查找所述会话标识并对所述会话标识进行验证。

在本示例实施方式中,该会话标识(sessionid)是指用户在请求访问第二应用系统时cas服务器存储在其c.com域名下的cookie缓存中的会话标识。这里对会话标识的验证具体是指对会话标识的时效性进行验证;虽然该会话标识是根据第二应用标识(clientid2)生成的,但经过cas服务器共享会话信息,所以访问第一应用系统或者第二应用系统均可使会话时效性得到刷新。

举例来说,服务器在确认视频应用系统的应用标识clientid-live合法之后,便会根据该应用标识clientid-live在服务器的c.com域名下的cookie缓存中查找相应的会话标识(sessionid)。由于服务器的c.com域名下已经存储有通过新闻应用系统建立的会话信息且该会话信息通过cas服务器由新闻应用系统和视频应用系统共享,因此访问任何一个应用系统的页面均可实现会话的刷新。

在步骤s13中,根据所述第一应用标识以及所述会话标识生成对应于所述第一应用系统的第一访问令牌,并将所述会话标识以及所述第一访问令牌发送至所述第一应用系统。

在本示例实施方式中,第一访问令牌(accesstoken1)是指用户访问第一应用系统的受保护资源的通行证,其具有一定的有效期,且每和cas服务器交互一次,有效期则刷新一次。

在此基础上,所述步骤s13具体可以包括:

s13a、在确认第一应用系统的第一应用标识(clientid1)合法且第二应用系统的会话标识(sessionid)未超时后,cas服务器直接生成专属于第一应用系统的第一访问令牌accesstoken-1。

s13b、cas服务器将会话标识(sessionid)以及第一访问令牌accesstoken-1返回给第一应用系统。

s13c、第一应用系统将接收到的会话标识sessionid和第一访问令牌accesstoken-1存储于第一应用系统的b.com域名下的cookie缓存中。

基于上述步骤s11-s13完成了第一应用系统的认证授权。通过在cas服务器的c.com域名下的cookie缓存中存储建立好的会话标识sessionid,可在第一应用系统接入cas服务器时直接根据已有的会话标识对其授权,第一应用系统在获得授权后向用户展示其受保护资源。

综上所述,本示例实施方式提供的单点登录方法可同时实现单点登录和单点退出。在一个应用系统退出后,其它域名下的应用系统相应的全部退出,其退出链接由cas服务器统一提供。当cas服务器退出后,会清除其c.com域名下的cookie缓存以及会话session信息,此时第二应用系统或者第一应用系统再次请求访问时,由于cas服务器已经查不到任何会话信息,因此各个应用系统都会受到拦截,从而不显示受保护资源的内容。

进一步的,本示例实施方式可将该单点登录方法的流程代码封装至一过滤器,当应用系统接入时,无需关注流程细节,仅引入cas单点系统共用的组件,即可达到全局控制的作用,从而避免了对应用系统的大量改造。在用户请求访问应用系统的受保护资源时,先经过该过滤器进行过滤判断,如果不通过,则直接返回cas服务器的统一登录页面,并添加当前应用系统的应用标识clientid的url参数,如果通过,则进行后续的应用系统业务流程。该方法接入简单,只需引入统一会员cas的应用程序接口压缩文件即clientapijar,并在工程代码加上应用程序接口api提供的过滤器,配置好客户端工程和单点登录服务器之间的通信协议,即可实现单点登录功能。

本示例实施方式还提供了一种单点登录系统,用于实现跨域应用系统间的会话共享。其中,第二应用系统、第一应用系统、以及服务器的域名各不相同,且第二应用系统和第一应用系统为相互信任的应用系统;第二应用系统的域名设为a.com,第一应用系统的域名设为b.com,服务器的域名设为c.com。

在此基础上,所述单点登录系统可以包括:

第二接收模块,用于接收第二应用系统发送的携带有第二应用标识以及用户登录信息的认证请求,并对所述第二应用标识以及所述用户登录信息进行验证;

第二处理模块,用于根据所述第二应用标识生成一会话标识以及对应于所述第二应用系统的第二访问令牌且存储于服务器缓存中,并将所述会话标识以及所述第二访问令牌发送至所述第二应用系统;

所述第二接收模块,还用于接收所述第二应用系统根据所述会话标识以及所述第二访问令牌生成的验证信息,并对所述验证信息进行验证;

所述第二处理模块,还用于响应验证结果返回一登录页面或者返回所述第二应用系统;

第一接收模块,用于接收第一应用系统发送的携带有第一应用标识的认证请求,并对所述第一应用标识进行验证;

查找模块,用于根据所述第一应用标识在服务器缓存中查找对应的会话,并在查找到所述会话后对所述会话对应的会话标识进行验证;

第一处理模块,用于根据所述第一应用标识以及所述会话标识生成对应于所述第一应用系统的第一访问令牌,并将所述会话标识以及所述第一访问令牌发送至所述第一应用系统。

本示例实施方式所提供的单点登录系统,在用户请求访问第二应用系统的受保护资源时建立起与服务器之间的会话,并将该会话对应的会话标识存储在服务器域名下的缓存数据中,在用户请求访问第一应用系统的受保护资源时,服务器会根据已存在的会话标识进行判断和授权,避免重新登录验证,从而实现跨域应用系统间的访问授权。这样一来,相互信任的应用系统之间可以通过会话共享的方式实现跨域应用系统的访问授权,并能达到统一退出的效果;在工程实现方面,可将该单点登录方法的流程代码封装至一过滤器,仅引入单点系统共用的组件,即可达到全局控制的作用,从而避免了对应用系统的大量改造。

本示例实施方式还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的单点登录方法。

计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读存储介质中包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、射频等等,或者上述的任意合适的组合。

本示例实施方式中还提出了一种电子设备,如图6所示,该电子设备10包括:处理组件11,其进一步可以包括一个或多个处理器,以及由存储器12所代表的存储器资源,用于存储可由处理组件11执行的指令,例如应用程序。存储器12中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件11被配置为执行指令,以执行上述的单点登录方法。

该电子设备10还可以包括:一个电源组件,电源组件被配置成对执行电子设备10进行电源管理;一个有线或无线网络接口13,被配置成将电子设备10连接到网络;以及一个输入输出(i/o)接口14。该电子设备10可以操作基于存储在存储器12的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

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