本公开涉及互联网技术领域,更具体地,涉及一种认证方法、装置、系统及介质。
背景技术:
限制很多产品和应用都要支持用户身份认证功能。目前通常是每个产品、每个应用都单独做一个用户身份认证服务系统以满足业务需要。用户身份认证业务包括:宿主应用的用户令牌(token)认证、第三方应用的用户令牌(token)认证、单点登录认证(sso)。在多客户端(iphone端、android端、网页web端、桌面客户端)应用中,每种客户端的用户认证逻辑不一致。比如:iphone端和android端的用户身份的认证逻辑一致,但和网页web端的用户身份认证逻辑不一致,而且认证机制是采用单一token机制。
在实现本公开构思的过程中,发明人发现现有技术中至少存在如下问题:现有应用的用户令牌(token)认证机制是采用单一token机制,token有效期为30天,token失效后需要用户重新登录。单一token机制中token有效期过长,被拦截破解的几率高,安全性较差。而且,在现有的技术实现中,每开发一个应用,都需要单独开发一套用户身份认证服务系统,造成重复造轮子,增加了研发成本。并且在同一应用且多客户端中,每种客户端的用户身份认证机制不一致,造成整体系统架构不统一,后台服务无法实现业务逻辑统一。
技术实现要素:
有鉴于此,本公开提供了一种双令牌有机耦合的、具有更高安全性的认证方法、装置、系统及介质。
本公开的一个方面,提供了一种认证方法,应用于认证服务端,所述认证服务端用于在客户端访问业务服务端的资源时对所述客户端进行授权和认证。所述方法包括:接收所述客户端发送的访问授权请求;响应于所述访问授权请求验证通过,获取动态令牌,所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端访问所述业务服务端的业务访问请求中所携带的令牌,所述第二令牌为用于更新所述第一令牌的令牌更新请求中所携带的令牌;以及将所述动态令牌发送至所述客户端。
根据本公开的实施例,所述方法还包括:接收所述客户端发送的所述业务访问请求;以及响应于所述业务访问请求中的所述第一令牌的验证通过,将所述业务访问请求转发至所述业务服务端。
根据本公开的实施例,所述方法还包括:接收所述客户端发送的所述令牌更新请求;响应于所述令牌更新请求中的所述第二令牌的验证通过,更新所述第一令牌;以及将更新后的第一令牌发送给所述客户端。
根据本公开的实施例,所述更新所述第一令牌包括:确定所述第一令牌的有效期是否截止;若所述第一令牌的有效期截止,则获取新的第一令牌;或者若所述第一令牌的有效期未截止,则延长所述第一令牌的有效期。
根据本公开的实施例,所述访问授权请求包括所述客户端的登陆用户的用户信息,所述获取动态令牌包括基于所述用户信息,通过加密算法生成所述动态令牌。
根据本公开的实施例,所述基于所述用户信息,通过加密算法生成所述动态令牌包括:利用消息摘要算法对由所述客户端的身份信息、所述登陆用户的编码、当前时间以及第一随机数组合得到的字符串进行处理,得到所述第一令牌;以及利用消息摘要算法对由所述客户端的身份信息、所述登陆用户的编码、所述当前时间以及第二随机数组合得到的字符串进行处理,得到所述第二令牌。
根据本公开的实施例,所述方法还包括:接收所述客户端发送的第三方令牌获取请求,所述第三方令牌获取请求用于获取提供给第三方应用服务端的临时令牌,所述第三方令牌获取请求包括所述第一令牌、以及所述第三方应用服务端的身份信息;在所述第三方令牌获取请求验证通过后,基于所述第三方应用服务端的身份信息获取所述临时令牌;以及将所述临时令牌发送给所述客户端。
根据本公开的实施例,所述方法还包括:接收用于对第三方应用服务端的访问授权的临时访问授权请求,其中所述临时访问授权请求包括所述临时令牌;以及在所述临时令牌验证通过后,获取第三方动态令牌,所述第三方动态令牌包括第三方第一令牌以及第三方第二令牌,其中所述第三方第一令牌的有效期短于所述第三方第二令牌,所述第三方第一令牌为所述第三方应用服务端调用所述客户端以访问所述业务服务端的请求中所携带的令牌,所述第三方第二令牌为调用所述客户端以更新所述第三方第一令牌的请求中所携带的令牌;以及将所述第三方动态令牌发送给所述第三方应用服务端。
本公开的第二方面,提供了一种认证方法,应用于客户端,其中,所述客户端在访问业务服务端的资源时利用认证服务端对所述客户端进行授权和认证。所述方法包括:向所述认证服务端发送访问授权请求;以及接收所述认证服务端发送的动态令牌,其中所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端访问所述业务服务端的业务访问请求中所携带的令牌,所述第二令牌为更新所述第一令牌的令牌更新请求中所携带的令牌。
根据本公开的实施例,所述方法还包括:向所述认证服务端发送所述业务访问请求;在所述业务访问请求中的所述第一令牌通过所述认证服务端的验证的情况下,接收所述业务服务端的对所述业务访问请求的响应;或者,在所述业务访问请求中的所述第一令牌未通过所述认证服务端的验证的情况下,接收所述认证服务端发送的所述客户端身份认证不通过的信息。
根据本公开的实施例,所述方法还包括:在所述第一令牌失效后,向所述认证服务端发送所述令牌更新请求;以及接收所述认证服务端的反馈信息,其中,若所述第一令牌更新成功,则所述反馈信息包括更新后的第一令牌。
根据本公开的实施例,所述方法还包括:接收第三方应用服务端的第一调用请求,所述第一调用请求用于所述第三方应用服务端请求访问授权;基于所述第一调用请求向所述认证服务端发送第三方令牌获取请求,所述第三方令牌获取请求用于获取提供给第三方应用服务端的临时令牌的,所述第三方令牌获取请求包括所述第一令牌、以及所述第三方应用服务端的身份信息;在所述第一令牌验证通过的情况下,接收所述认证服务端反馈的所述临时令牌;以及基于所述第三方应用服务端的身份信息,将所述临时令牌发送给所述第三方应用服务端。
本公开的第三方面,提供了一种认证方法,应用于第三方应用服务端,所述第三方应用服务端通过调用宿主应用的客户端来访问业务服务端的资源,以及所述客户端在访问业务服务端的资源时利用认证服务端对所述客户端进行授权和认证。所述方法包括:向所述客户端发送第一调用请求,所述第一调用请求用于所述第三方应用服务端请求访问授权,所述第一调用请求包括所述第三方应用服务端的身份信息;接收所述客户端基于所述第一调用请求而反馈的临时令牌,所述临时令牌为所述认证服务端基于所述第三方应用服务端的身份信息而获得的令牌;向所述认证服务端发送获取第三方动态令牌的临时访问授权请求,其中所述临时访问授权请求包括所述临时令牌;以及在所述临时令牌验证通过的情况下,接收所述认证服务端发送的所述第三方动态令牌,所述第三方动态令牌包括第三方第一令牌、以及第三方第二令牌,其中所述第三方第一令牌的有效期短于所述第三方第二令牌,所述第三方第一令牌为所述第三方应用服务端调用所述客户端以访问所述业务服务端的请求中所携带的令牌,所述第三方第二令牌为调用所述客户端以更新所述第三方第一令牌的请求中所携带的令牌。
本公开的第四方面,提供了一种认证装置,设置于认证服务端,所述认证服务端用于在客户端访问业务服务端的资源时对所述客户端进行授权和认证。所述装置包括第一接收模块、动态令牌获取模块、以及动态令牌更新模块。所述第一接收模块用于接收所述客户端发送的访问授权请求。所述动态令牌获取模块,用于响应于所述访问授权请求验证通过,获取动态令牌,所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端访问所述业务服务端的业务访问请求中所携带的令牌,所述第二令牌为用于更新所述第一令牌的令牌更新请求中所携带的令牌。所述动态令牌发送模块用于将所述动态令牌发送至所述客户端。
本公开的第五方面,提供了一种认证装置,设置于客户端,其中,所述客户端在访问业务服务端的资源时利用认证服务端对所述客户端进行授权和认证。所述装置包括第一发送模块、以及动态令牌接收模块。所述第一发送模块用于向所述认证服务端发送访问授权请求。所述动态令牌接收模块用于接收所述认证服务端发送的动态令牌,其中所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端访问所述业务服务端的业务访问请求中所携带的令牌,所述第二令牌为更新所述第一令牌的令牌更新请求中所携带的令牌。
本公开的第六方面,提供了一种认证装置,设置于第三方应用服务端,所述第三方应用服务端通过调用宿主应用的客户端来访问业务服务端的资源,以及所述客户端在访问业务服务端的资源时利用认证服务端对所述客户端进行授权和认证。所述装置包括访问授权调用模块、临时令牌接收模块、第三方令牌请求模块、以及第三方令牌接收模块。访问授权调用模块用于向所述客户端发送第一调用请求,所述第一调用请求用于所述第三方应用服务端请求访问授权,所述第一调用请求包括所述第三方应用服务端的身份信息。临时令牌接收模块用于接收所述客户端基于所述第一调用请求而反馈的临时令牌,所述临时令牌为所述认证服务端基于所述第三方应用服务端的身份信息而获得的令牌。第三方令牌请求模块用于向所述认证服务端发送获取第三方动态令牌的临时访问授权请求,其中所述临时访问授权请求包括所述临时令牌。以及第三方令牌接收模块用于在所述临时令牌验证通过的情况下,接收所述认证服务端发送的所述第三方动态令牌,所述第三方动态令牌包括第三方第一令牌、以及第三方第二令牌,其中所述第三方第一令牌的有效期短于所述第三方第二令牌,所述第三方第一令牌为所述第三方应用服务端调用所述客户端以访问所述业务服务端的请求中所携带的令牌,所述第三方第二令牌为调用所述客户端以更新所述第三方第一令牌的请求中所携带的令牌。
本公开的第七方面,提供了一种认证系统,包括:一个或多个存储器以及一个或多个处理器。所述一个或多个存储器存储有可执行指令。所述一个或多个处理器执行所述可执行指令,以实现根据本公开的第一方面、或者第二方面、或者第三方面的方法。
本公开的第八方面,提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据本公开的第一方面、或者第二方面、或者第三方面的方法。
根据本公开的实施例,在认证服务过程中,给客户端的令牌包括了两个令牌(第一令牌和第二令牌),第一令牌可以用于业务访问请求中的客户端认证,有效期较短。第二令牌可以用来在第一令牌失效后来更新第一令牌。这样一方面使得频繁传输的第一令牌有效期的有效期较短,降低了在其有效期内被破解的可能性。另一方面,第二令牌可以在第一令牌失效后及时更新第一令牌,避免用户要不断重新请求授权的麻烦。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的认证方法、装置、系统及介质的应用场景;
图2示意性示出了根据本公开实施例的认证方法、装置、系统及介质的技术架构;
图3示意性示出了根据本公开实施例的设置于认证服务端的认证装置的框图;
图4示意性示出了根据本公开一实施例的应用于认证服务端的认证方法的流程图;
图5示意性示出了根据本公开另一实施例的应用于认证服务端的认证方法的流程图;
图6示意性示出了根据本公开又一实施例的应用于认证服务端的认证方法的流程图;
图7示意性示出了根据本公开实施例的设置于宿主应用的客户端的认证装置的框图;
图8示意性示出了根据本公开一实施例的应用于客户端的认证方法的流程图;
图9示意性示出了根据本公开另一实施例的应用于客户端的认证方法的流程图;
图10示意性示出了根据本公开又一实施例的应用于客户端的认证方法的流程图;
图11示意性示出了根据本公开实施例的设置于宿主应用的第三方应用服务端的认证装置的框图;
图12示意性示出了根据本公开实施例的应用于第三方应用服务端的认证方法的流程图;
图13示意性示出了根据本公开实施例的应用于客户端的为第三方应用服务端提供认证的方法流程图;
图14示意性示出了根据本公开实施例的应用于认证服务端的为第三方应用服务端提供认证的方法流程图;以及
图15示意性示出了根据本公开实施例的适于实现认证方法的计算机系统的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。
本公开的实施例提供了一种应用于认证服务端的认证方法、装置、系统及介质。所述认证方法包括:接收所述客户端发送的访问授权请求;响应于所述访问授权请求验证通过,获取动态令牌,所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,将所述动态令牌发送至所述客户端。本公开实施例还提供了一种应用于客户端的认证方法、装置、系统及介质,以及一种应用于第三方应用服务端的认证方法、装置、系统及介质。
根据本公开的实施例,在认证服务过程中,给客户端的令牌包括了两个令牌(第一令牌和第二令牌),第一令牌可以用于业务访问请求中的客户端认证,有效期较短。第二令牌可以用来在第一令牌失效后来更新第一令牌。这样一方面使得频繁传输的第一令牌有效期的有效期较短,降低了在其有效期内被破解的可能性。另一方面,第二令牌可以在第一令牌失效后及时更新第一令牌,避免用户要不断重新请求授权的麻烦。本公开实施例中的第一令牌和第二令牌联合用于访问认证的机制简称为双令牌机制。
图1示意性示出了根据本公开实施例的认证方法、装置、系统及介质的应用场景100。
如图1所示,根据该实施例的应用场景100可以包括客户端101、认证服务端102以及业务服务端103中,其中,客户端101、认证服务端102以及业务服务端103之间可以通过网络通信。
客户端101可以包括各类客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。客户端101可以安装于各类终端设备中,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
业务服务端103可以响应接收到的来自客户端101的访问请求,并向客户端101反馈相应的服务,例如提供业务服务端103的web资源等。业务服务端103可以设置于提供各种服务的服务器,例如对客户端101所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给客户端101。
认证服务端102用于在客户端101访问业务服务端103的资源时对所述客户端101进行授权和认证。例如,客户端101在访问业务服务端103,需要先到认证服务端102请求用于访问授权的令牌(例如,本公开实施例的动态令牌)。然后,客户端101每次访问业务服务端103的访问请求都携带有令牌,并且待该访问请求通过认证服务端102的验证后,再将该访问请求转发给业务服务端103。
图1所示的来自客户端101的访问请求先达到认证服务端102,再达到业务服务端103仅是一种示例。在一些实施例中,可以是来自客户端101的访问请求可以先到达业务服务端103,然后被业务服务端103转发给认证服务端102进行认证,并待认证通过后再被转发到业务服务端103。
继续参考如图1,根据该实施例的应用场景100还可以包括第三方应用服务端104。该第三方应用服务端104可以通过调用宿主应用的客户端101中的第三方应用程序来提供第三方应用服务。根据本公开实施例,在第三方应用服务端104访问业务服务端103的过程中,第三方应用服务端104可以通过客户端101到认证服务端102处获取表征临时访问身份的临时令牌和用于验证临时访问权限的第三方动态令牌。然后,第三方应用服务端104可以利用该临时令牌和第三方动态令牌作为访问请求的认证信息,来访问业务服务端103,并将业务服务端103响应的反馈信息发送给客户端101。
需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
图2示意性示出了根据本公开实施例的认证方法、装置、系统及介质的技术架构。
结合图1和图2,根据本公开的实施例,认证服务端102提供的认证服务可以满足大量业务应用的前端用户身份鉴权。该认证服务的核心功能可以包括支持宿主应用的用户身份授权、和/或支持宿主应用的用户身份验证、和/或支持宿主应用开放接口的用户身份授权、和/或宿主应用开放接口的用户身份验证。
根据本公开的实施例,当用户在客户端101的宿主应用输入登录名和登录密码登录宿主应用时并发送访问授权请求时,帐号服务会获取到用户的登录名和登录密码并进行验证。如果验证成功,帐号服务会将客户端101发送的访问授权请求转发给认证服务端102;如果验证失败,则给客户端101返回登录失败信息。例如,当用户在客户端101的宿主应用输入登录名和登录密码登录宿主应用时并发送访问授权请求时,如果宿主应用接入了网关服务端,则网关服务端将访问授权请求转发给帐号服务;如果宿主应用未接入网关服务端而是直接接入了业务服务端103,则业务主服务端可以将访问授权请求转发给帐号服务。
然后,认证服务端102提供的认证服务对访问授权请求做一定的逻辑运算后,生成根据本公开实施例的动态令牌(包括第一令牌和第二令牌),并将动态令牌发送给帐号服务。之后,帐号服务将动态令牌返回给客户端101的宿主应用。此后,宿主应用就可以根据本公开实施例的方式通过双令牌机制访问业务服务端103的资源。
根据本公开的实施例,对于同一应用多客户端的情形,也可以通过在认证服务中集成多端登陆功能,使得多种类型的客户端(iphone端、android端、网页web端、桌面客户端)的用户身份认证机制一致,避免了每开发一个应用,都需要单独开发一套用户身份认证服务系统带来的研发成本加剧。
根据本公开的实施例,采用双令牌(第一令牌和第二令牌)机制。其中第一令牌有效期较短(比如:2小时),第二令牌有效期较长(比如:30天)。客户端101和业务服务端103交换数据时采用第一令牌,被拦截破解的几率大大降低,提高了系统安全性。第一令牌失效时根据第二令牌来获取新的第一令牌或者延长第一令牌的有效期,避免客户端用户要不断重新请求授权的麻烦。
根据本公开的实施例,对于宿主应用中的第三方应用,也可以利用该认证服务提供统一的认证机制,可以有效统一宿主应用及其开放接口的认证方式。
图3示意性示出了根据本公开实施例的设置于认证服务端102的认证装置300的框图。
如图3所示,该认证装置300设置于认证服务端102。所述认证服务端102用于在客户端101访问业务服务端103的资源时对所述客户端101进行授权和认证。
认证装置300包括第一接收模块310、动态令牌获取模块320、以及动态令牌更新模块330。
所述第一接收模块310用于接收所述客户端101发送的访问授权请求。
所述动态令牌获取模块320用于响应于所述访问授权请求验证通过,获取动态令牌,所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端101访问所述业务服务端103的业务访问请求中所携带的令牌,所述第二令牌为用于更新所述第一令牌的令牌更新请求中所携带的令牌。
所述动态令牌发送模块330用于将所述动态令牌发送至所述客户端101。
根据本公开的另一些实施例,该认证装置300还可以包括业务访问处理模块340、和/或令牌更新处理模块350、和/或第三方应用认证处理模块360。
业务访问处理模块340可以用于接收所述客户端101发送的所述业务访问请求,以及响应于所述业务访问请求中的所述第一令牌的验证通过,将所述业务访问请求转发至所述业务服务端103。
令牌更新处理模块350可以用于接收所述客户端101发送的所述令牌更新请求,响应于所述令牌更新请求中的所述第二令牌的验证通过,更新所述第一令牌,以及将更新后的第一令牌发送给所述客户端101。
第三方应用认证处理模块360可以用于根据客户端101的请求,对第三方应用服务端104发送表征临时访问身份的临时令牌和用于验证临时访问权限的第三方动态令牌,并对第三方应用服务端104访问业务服务端103的访问请求进行授权和认证。
该认证装置300例如可以用于执行如下文图4~图6、以及图14中任意一个所示例的方法流程,以实现通过两个令牌(第一令牌和第二令牌)提供认证服务。其中,第一令牌可以用于业务访问请求中的客户端101的认证,有效期较短。第二令牌可以用来在第一令牌失效后来更新第一令牌。这样一方面使得频繁传输的第一令牌有效期的有效期较短,降低了在其有效期内被破解的可能性。另一方面,第二令牌可以在第一令牌失效后及时更新第一令牌,避免用户要不断重新请求授权的麻烦。
图4示意性示出了根据本公开一实施例的应用于认证服务端102的认证方法的流程图。
如图4所示,该应用于认证服务端102的认证方法可以包括操作s401~操作s403。
首先在操作s401,第一接收模块310接收所述客户端101发送的访问授权请求。
然后在操作s402,动态令牌获取模块320响应于所述访问授权请求验证通过,获取动态令牌,所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端101访问所述业务服务端103的业务访问请求中所携带的令牌,所述第二令牌为用于更新所述第一令牌的令牌更新请求中所携带的令牌。
接着在操作s403,动态令牌发送模块330将所述动态令牌发送至所述客户端101。至此,就完成了对客户端101的授权。
结合图2,在一个实施例中,认证服务端102的认证服务对外提供jsf和http接口,方便外部服务调用。认证服务端102在接收到客户端101发送的访问授权请求后,首先校验该访问授权请求中的客户端101的登录用户的用户信息(即,appid)是否合法:如果不合法,则返回错误响应;如果合法,则获取动态令牌(第一令牌和第二令牌)。需要说明的是,为了便于区分和理解,以下部分实施例可以对第一令牌命名为accesstoken,对第二令牌命名为refreshtoken。
根据本公开的实施例,所述访问授权请求包括所述客户端101的登陆用户的用户信息。在操作s402中获取动态令牌,具体可以是动态令牌获取模块320基于所述用户信息,通过加密算法生成所述动态令牌。
根据本公开的一个实施例,所述基于所述用户信息,通过加密算法生成所述动态令牌可以包括利用消息摘要算法对由所述客户端的身份信息、所述登陆用户的编码、当前时间以及第一随机数组合得到的字符串进行处理,得到所述第一令牌;以及利用消息摘要算法对由所述客户端的身份信息、所述登陆用户的编码、所述当前时间以及第二随机数组合得到的字符串进行处理,得到所述第二令牌。
在一个实施例中,该消息摘要算法具体可以是md5算法。所述第一令牌和第二令牌的计算过程具体可以表示为如下:
所述第一令牌accesstoken=md5(所述客户端101的身份信息 所述登陆用户的编码 当前时间(毫秒) 第一随机数);
所述第二令牌refreshtoken=md5(所述客户端101的身份信息 所述客户端101的密码 所述登陆用户的编码 当前时间(毫秒) 第二随机数)
其中,符号“ ”表示字符串相加,该第一随机数和第二随机数可以相同或者不同。
根据本公开的实施例,生成完accesstoken和refreshtoken后,认证服务端102可以将accesstoken保存到缓存(例如,redis)中,并将refreshtoken保存到数据库(例如,mysql)和redis中。其中,将accesstoken保存到redis中,可以方便快速生成业务访问请求。而refreshtoken的保存期限可以较长,可以在数据库和缓存中同时保存,其中,放到缓存中的refreshtoken可以方便在刷新accesstoken时快速读取。
之后,认证服务端102可以将accesstoken和refreshtoken这2个动态令牌信息返回给客户端101。
如果客户端101属于移动端,在接收到refreshtoken和accesstoken后,可以将这2个token保存到移动端本地。如果客户端101属于网页web端,则可以将accesstoken保存在cookie中,然后每次103发送业务访问请求时带上accesstoken。
另外,当用户在客户端101上登出时,认证服务端102接收到来自客户端101的用户登出请求,然后从数据库中找出该用户的登录信息,然后清空redis中的accesstoken和refreshtoken,最后将数据库中该用户的登录状态设置为已登出。
图5示意性示出了根据本公开另一实施例的应用于认证服务端102的认证方法的流程图。
如图5所示,根据本公开实施例该应用关于认证服务端102的认证方法除了操作s401~操作s403以外,还可以包括操作s504~操作s505。
根据本公开的实施例,操作s504和操作s505可以由业务访问处理模块340来执行。其中,在操作s504,接收所述客户端101发送的所述业务访问请求。在操作s505,响应于所述业务访问请求中的所述第一令牌的验证通过,将所述业务访问请求转发至所述业务服务端103。
根据本公开的实施例,认证服务端对第一令牌accesstoken的认证过程,例如可以是从redis中读取业务访问请求中的accesstoken:如果redis中不存在该accesstoken,则读取失败,验证失败;如果redis中存在该accesstoken,则验证通过。
根据本公开的实施例,客户端101和业务服务端103交换数据时采用第一令牌。由于第一令牌的有效期较短,因此第一令牌被拦截破解的几率大大降低,进而提高了系统的安全性。
图6示意性示出了根据本公开又一实施例的应用于认证服务端102的认证方法的流程图。
如图6所示,根据本公开实施例该应用于认证服务端102的认证方法除了操作s401~操作s403以外,还可以包括操作s604~操作s606。
根据本公开的实施例,操作s604和操作s606可以由令牌更新处理模块350来执行。具体地,首先在操作s604,接收所述客户端101发送的所述令牌更新请求。然后在操作s605,响应于所述令牌更新请求中的所述第二令牌的验证通过,更新所述第一令牌。接着在操作s606,将更新后的第一令牌发送给所述客户端101。
其中,在操作s605中更新所述第一令牌,可以先确定所述第一令牌的有效期是否截止:若所述第一令牌的有效期截止,则获取新的第一令牌。或者,若所述第一令牌的有效期未截止,则延长所述第一令牌的有效期。
根据本公开的实施例,利用第二令牌在第一令牌失效后及时更新第一令牌,避免用户要不断重新请求授权的麻烦。
例如,当客户端101检测到或者接收到accesstoken失效后,会给业务服务端103发送刷新accesstoken的请求以获取新的accesstoken。
根据本公开的一个实施例,认证服务端102接收到刷新accesstoken请求后,首先根据刷新accesstoken请求中的refreshtoken,从redis中读取对应的refreshtoken信息。如果在redis中读取到refreshtoken信息,则将redis返回的用户信息和刷新accesstoken请求中的客户端101的登录用户的用户信息进行比较。如果两个用户信息不相同,则向客户端101返回用户信息不正确的信息;如果两个用户信息相同,则进行accesstoken的刷新。
根据本公开的另一个实施例,认证服务端102接收到刷新accesstoken请求后,如果在redis中没有读取到refreshtoken信息,则从mysql数据库中查询是否存在该refreshtoken。如果数据库中不存在,则表明客户端101发送过来的refreshtoken是无效的,从而向客户端101返回无效的refreshtoken响应。如果数据库中存在该refreshtoken,则判断该refreshtoken是否过期,如果过期,则向用户端返回过期信息;如果未过期,则进行accesstoken的刷新。
在一个实施例中,进行accesstoken的刷新时,可以首先从redis中查找该refreshtoken所对应的accesstoken是否存在。如果redis中存在该refreshtoken所对应的accesstoken,则给该accesstoken续期(2小时)。如果redis中不存在该refreshtoken所对应的accesstoken,则生成新的accesstoken。生成新的accesstoken之后,将新的accesstoken写入到redis中,然后再更新数据库和redis中refreshtoken的有效期,顺延有效期,处理完成后,将更新后的accesstoken信息返回给客户端101。
图7示意性示出了根据本公开实施例的设置于宿主应用的客户端101的认证装置700的框图。
根据本公开的实施例,该认证装置700设置于客户端101。所述客户端101在访问业务服务端103的资源时利用认证服务端102对所述客户端101进行授权和认证。所述认证装置700包括第一发送模块710、以及动态令牌接收模块720。
所述第一发送模块710用于向所述认证服务端102发送访问授权请求。
所述动态令牌接收模块720用于接收所述认证服务端102发送的动态令牌,其中所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端101访问所述业务服务端103的业务访问请求中所携带的令牌,所述第二令牌为更新所述第一令牌的令牌更新请求中所携带的令牌。
根据本公开的实施例,该认证装置700还可以包括业务访问模块730、和/或令牌更新请求模块740、和/或第三方应用调用模块750。
业务访问模块730用于向所述认证服务端102发送所述业务访问请求,并在所述业务访问请求中的所述第一令牌通过所述认证服务端102的验证的情况下,接收所述业务服务端103的对所述业务访问请求的响应,或者在所述业务访问请求中的所述第一令牌未通过所述认证服务端102的验证的情况下,接收所述认证服务端102发送的所述客户端101身份认证不通过的信息。
令牌更新模块740用于在所述第一令牌失效后,向所述认证服务端102发送所述令牌更新请求,以及接收所述认证服务端102的反馈信息,其中,若所述第一令牌更新成功,则所述反馈信息包括更新后的第一令牌。
第三方应用调用模块750用于基于第三方应用服务端104的第一调用请求向所述认证服务端102发送第三方令牌获取请求,为第三方应用服务端104获取表征临时访问身份的临时令牌,并转发给第三方应用服务端104。
该认证装置700例如可以用于执行如下文图8~图10、以及图13中任意一个所示例的方法流程,以实现双令牌机制。
图8示意性示出了根据本公开一实施例的应用于客户端101的认证方法的流程图。
如图8所示,根据本公开的实施例,该应用于客户端101的认证方法可以包括操作s801和操作s802。
在操作s801,第一发送模块710向所述认证服务端102发送访问授权请求。
在操作s802,动态令牌接收模块720接收所述认证服务端102发送的动态令牌,其中所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端访问所述业务服务端103的业务访问请求中所携带的令牌,所述第二令牌为更新所述第一令牌的令牌更新请求中所携带的令牌。以此方式,完成对客户端101的授权。
图9示意性示出了根据本公开另一实施例的应用于客户端101的认证方法的流程图。
如图9所示,根据本公开的实施例,该应用于客户端101的认证方法除了操作s801和操作s802以外,还可以包括操作s903、操作s904a或者操作s904b。
根据本公开的实施例,操作s903、操作s904a以及操作s904b可以由业务访问模块730来执行。具体地,在操作s903向所述认证服务端102发送所述业务访问请求。然后,在操作s904a在所述业务访问请求中的所述第一令牌通过所述认证服务端102的验证的情况下,接收所述业务服务端103的对所述业务访问请求的响应。或者,在操作s904b在所述业务访问请求中的所述第一令牌未通过所述认证服务端102的验证的情况下,接收所述认证服务端102发送的所述客户端101身份认证不通过的信息。
由此可见,在客户端101和业务服务端103交换数据时仅传输第一令牌。由于第一令牌的有效期较短,因此第一令牌被拦截破解的几率大大降低,进而提高了系统的安全性。
图10示意性示出了根据本公开又一实施例的应用于客户端的认证方法的流程图。
如图10所示,根据本公开实施例的应用于客户端101的认证方法除了操作s801和操作s802以外,还可以包括操作s1003和操作s1004。
根据本公开的实施例,操作s1003和操作s1004可以由令牌更新请求模块740来执行。其中,首先在操作s1003,在所述第一令牌失效后,向所述认证服务端102发送所述令牌更新请求。然后在操作s1004,接收所述认证服务端102的反馈信息,其中,若所述第一令牌更新成功,则所述反馈信息包括更新后的第一令牌。以此方式,及时更新第一令牌,避免用户要不断重新请求授权的麻烦。
图11示意性示出了根据本公开实施例的设置于宿主应用的第三方应用服务端104的认证装置1100的框图。
如图11所示,根据本公开实施例的认证装置1100设置于第三方应用服务端104。所述第三方应用服务端104通过调用宿主应用的客户端101来访问业务服务端103的资源,以及所述客户端101在访问业务服务端103的资源时利用认证服务端102对所述客户端101进行授权和认证。
该认证装置1100包括访问授权调用模块1110、临时令牌接收模块1120、第三方令牌请求模块1130、以及第三方令牌接收模块1140。
访问授权调用模块1110用于向所述客户端101发送第一调用请求,所述第一调用请求用于所述第三方应用服务端104请求访问授权,所述第一调用请求包括所述第三方应用服务端104的身份信息。
临时令牌接收模块1120用于接收所述客户端101基于所述第一调用请求而反馈的临时令牌,所述临时令牌为所述认证服务端102基于所述第三方应用服务端104的身份信息而获得的令牌。
第三方令牌请求模块1130用于向所述认证服务端102发送获取第三方动态令牌的临时访问授权请求,其中所述临时访问授权请求包括所述临时令牌。
第三方令牌接收模块1140用于在所述临时令牌验证通过的情况下,接收所述认证服务端102发送的所述第三方动态令牌,所述第三方动态令牌包括第三方第一令牌、以及第三方第二令牌,其中所述第三方第一令牌的有效期短于所述第三方第二令牌,所述第三方第一令牌为所述第三方应用服务端104调用所述客户端101以访问所述业务服务端103的请求中所携带的令牌,所述第三方第二令牌为调用所述客户端101以更新所述第三方第一令牌的请求中所携带的令牌。
根据本公开的一些实施例,该认证装置1100还可以包括第三方应用访问模块1150。该第三方应用访问模块1150用于以所述临时令牌作为第三方应用服务端104的身份,以所述第三方第一令牌作为认证信息,发送访问请求以在通过认证服务端102的认证之后访问业务服务端103的资源。
根据本公开的实施例,该认证装置1100可以用来执行图12所示的认证方法。
图12示意性示出了根据本公开实施例的应用于第三方应用服务端104的认证方法的流程图。
如图12所示,根据本公开实施例该认证方法可以包括操作s1201~操作s1204。
在操作s1201,访问授权调用模块1110向所述客户端101发送第一调用请求,所述第一调用请求用于所述第三方应用服务端104请求访问授权,所述第一调用请求包括所述第三方应用服务端104的身份信息。
在操作s1202,临时令牌接收模块1120接收所述客户端101基于所述第一调用请求而反馈的临时令牌,所述临时令牌为所述认证服务端102基于所述第三方应用服务端104的身份信息而获得的令牌。
在操作s1203,第三方令牌请求模块1130向所述认证服务端102发送获取第三方动态令牌的临时访问授权请求,其中所述临时访问授权请求包括所述临时令牌。
在操作s1204,第三方令牌接收模块1140在所述临时令牌验证通过的情况下,接收所述认证服务端102发送的所述第三方动态令牌,所述第三方动态令牌包括第三方第一令牌、以及第三方第二令牌,其中所述第三方第一令牌的有效期短于所述第三方第二令牌,所述第三方第一令牌为所述第三方应用服务端104调用所述客户端101以访问所述业务服务端103的请求中所携带的令牌,所述第三方第二令牌为调用所述客户端101以更新所述第三方第一令牌的请求中所携带的令牌。以此方式,第三方应用服务端104也可以通过认证服务端102的认证,来访问业务服务端103的资源。并且,在与业务服务端103交互时使用有效期较短的第三方第一令牌,可以降低令牌被拦截破解的概率,提高访问安全性。
图13示意性示出了根据本公开实施例的应用于客户端101的为第三方应用服务端104提供认证的方法流程图。
如图13所示,根据本公开实施例的应用于客户端101的为第三方应用服务端104提供认证的方法可以包括操作s1301~操作s1304。其中,操作s1301~操作s1304可以由第三方应用调用模块750执行。
在操作s1301,接收第三方应用服务端104的第一调用请求,所述第一调用请求用于所述第三方应用服务端104请求访问授权。
在操作s1302,基于所述第一调用请求向所述认证服务端102发送第三方令牌获取请求,所述第三方令牌获取请求用于获取提供给第三方应用服务端104的临时令牌,所述第三方令牌获取请求包括所述第一令牌、以及所述第三方应用服务端的身份信息。
在操作s1303,在所述第一令牌验证通过的情况下,接收所述认证服务端102反馈的所述临时令牌。
在操作s1304,基于所述第三方应用服务端的身份信息,将所述临时令牌发送给所述第三方应用服务端104。
客户端101基于第三方应用服务端104的调用请求,到认证服务端102为第三方应用服务端104请求作为临时身份的临时令牌,从而使第三方应用服务端104可以利用该临时令牌到认证服务端102请求对业务服务端103的临时访问资格。
图14示意性示出了根据本公开实施例的应用于认证服务端102的为第三方应用服务端提供认证的方法流程图。
如图14所示,根据本公开的实施例,该应用于认证服务端102的为第三方应用服务端104提供认证的方法可以包括操作s1401~操作s1406。其中,操作s1401~操作s1406可以由第三方应用认证处理模块360来执行。
在操作s1401,接收所述客户端101发送的第三方令牌获取请求,所述第三方令牌获取请求用于获取提供给第三方应用服务端104的临时令牌,所述第三方令牌获取请求包括所述第一令牌、以及所述第三方应用服务端的身份信息。
在操作s1402,在所述第三方令牌获取请求验证通过后,基于所述第三方应用服务端的身份信息获取所述临时令牌。
在操作s1403,将所述临时令牌发送给所述客户端101。这样,通过客户端101将该临时令牌转发给第三方应用服务端104,从而使得第三方应用服务端104可以基于该表征第三方应用服务端的身份信息的临时令牌到认证服务端102请求访问授权和认证。
接着在操作s1404,接收第三方应用服务端104发送的用于对第三方应用服务端104访问授权的临时访问授权请求,其中所述临时访问授权请求包括所述临时令牌。
在操作s1405,在所述临时令牌验证通过后,获取第三方动态令牌,所述第三方动态令牌包括第三方第一令牌以及第三方第二令牌,其中所述第三方第一令牌的有效期短于所述第三方第二令牌,所述第三方第一令牌为所述第三方应用服务端104调用所述客户端101以访问所述业务服务端103的请求中所携带的令牌,所述第三方第二令牌为调用所述客户端101以更新所述第三方第一令牌的请求中所携带的令牌。
在操作s1406,将所述第三方动态令牌发送给所述第三方应用服务104。至此,实现了对第三方应用服务端104的临时访问资格的授权。
根据本公开的实施例,如果第三方应用服务端104调用宿主应用的客户端101时,先根据第三方应用服务端的调用请求中提供的述第三方应用服务端的身份信息从认证服务端102中获取一次性临时令牌。
例如,认证服务端102接收到获取临时令牌请求后,可以首先判断述第三方应用服务端的身份信息是否合法,如果不合法,则给宿主应用的客户端101返回请求参数失败响应;如果第三方应用服务端的身份信息合法,则继续判断请求中宿主应用的客户端101的accesstoken是否合法。例如,从redis中读取accesstoken是否存在,如果不存在,则给宿主应用的客户端101返回accesstoken无效的响应;如果存在则确定accesstoken合法。
认证服务端102在确定accesstoken合法后,则根据redis中读取到的客户端101的登录用户的用户信息以及第三方应用信息生成临时令牌,并将此临时令牌保存到redis中(例如,仅限一次性使用,且有效时间例如可以设置为10分钟)。然后认证服务端102给第三方应用服务端104创建用户openid,并将openid保存到数据库和redis中,以便下次使用。接着认证服务端102可以通过宿主应用的客户端101向第三方应用服务端104传送该临时令牌。
第三方应用服务端104接收到临时令牌后,可以将向认证服务端102发起获取第三方动态令牌的请求。
认证服务端102接收到该获取第三方动态令牌的请求后,可以先校验请求中的第三方应用服务端的身份信息是否合法。如果第三方应用服务端的身份信息不合法,则返回错误响应。如果第三方应用服务端的身份信息合法,则检测临时令牌是否合法。
如果认证服务端102检测临时令牌不合法,则返回错误响应;如果认证服务端102检测到临时令牌合法,则制作第三方第一令牌和第三方第二令牌,然后将第三方第二令牌写入数据库和redis,并将第三方第一令牌写入redis,之后经由宿主应用的客户端101将第三方第一令牌和第三方第二令牌传送给第三方应用服务端104。之后,第三方应用服务端104就获得了临时访问资格。
此后,第三方应用服务端104就可以基于第三方应用第一令牌来访问业务服务端103。例如,当第三方应用服务端104调用宿主应用的客户端101来访问业务服务端103的资源时,认证服务端102会先验证第三方应用服务端104传过来的第三方第一令牌是否有效,如果无效,则拒绝请求,返回错误响应;如果验证有效,并将第三方应用服务端104的业务访问转发给业务服务端103。
根据本公开的实施例,第三方第二令牌可以用于更新第三方第一令牌。例如,当第三方应用服务端104接收到第三方第一令牌失效后,第三方应用服务端104会给认证服务端102发送刷新第三方第一令牌的请求。
认证服务端102接收到刷新第三方第一令牌请求后,首先根据请求中的第三方第二令牌,从redis中读取对应的第三方第二令牌的信息。
如果认证服务端102从redis中读取到第三方第二令牌,则从redis中读取该第三方第二令牌所对应的第三方第一令牌是否存在,如果存在,则给该第三方第一令牌续期(例如,2小时),如果不存在,则生成新的第三方第一令牌。
如果认证服务端102从redis中没有读取到第三方第二令牌,则从数据库(例如,mysql)中查询是否存在该第三方第二令牌。如果数据库中不存在,则表明第三方应用服务端104发送过来的第三方第二令牌是无效的,向客户端101返回第三方第二令牌无效的响应;如果数据库中存在该第三方第二令牌,则判断该第三方第二令牌是否过期,如果过期,则向客户端101返回过期信息;如果未过期,则生成新的第三方第一令牌。
认证服务端102获得更新后的第三方第一令牌之后,将更新后的第三方第一令牌写入到redis中,然后再更新数据库和redis中第三方第二令牌的有效期,顺延有效期,处理完成后,最后将最新的第三方第一令牌信息返回给第三方应用服务端104。
根据本公开的实施例,采用双令牌(第一令牌和第二令牌)机制。其中第一令牌有效期短于第二令牌有效期。其中,客户端101和业务服务端103交换数据时采用第一令牌,被拦截破解的几率大大降低,提高了系统安全性。第一令牌失效时根据第二令牌来获取新的第一令牌或者延长第一令牌的有效期,避免客户端用户要不断重新请求授权的麻烦。
根据本公开的实施例,对于宿主应用中的第三方应用,也可以以类似于对宿主应用的客户端101的双令牌认证机制,通过双令牌进行认证。从而,利用该认证服务端104提供统一的认证机制,可以有效统一宿主应用及其开放接口的认证方式。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一接收模块310、动态令牌获取模块320、动态令牌更新模块330、业务访问处理模块340、令牌更新处理模块350、第三方应用认证处理模块360、第一发送模块710、动态令牌接收模块720、业务访问模块730、令牌更新请求模块740、或第三方应用调用模块750、访问授权调用模块1110、临时令牌接收模块1120、第三方令牌请求模块1130、第三方令牌接收模块1140、以及第三方应用访问模块1150中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一接收模块310、动态令牌获取模块320、动态令牌更新模块330、业务访问处理模块340、令牌更新处理模块350、第三方应用认证处理模块360、第一发送模块710、动态令牌接收模块720、业务访问模块730、令牌更新请求模块740、或第三方应用调用模块750、访问授权调用模块1110、临时令牌接收模块1120、第三方令牌请求模块1130、第三方令牌接收模块1140、以及第三方应用访问模块1150中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一接收模块310、动态令牌获取模块320、动态令牌更新模块330、业务访问处理模块340、令牌更新处理模块350、第三方应用认证处理模块360、第一发送模块710、动态令牌接收模块720、业务访问模块730、令牌更新请求模块740、或第三方应用调用模块750、访问授权调用模块1110、临时令牌接收模块1120、第三方令牌请求模块1130、第三方令牌接收模块1140、以及第三方应用访问模块1150中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图15示意性示出了根据本公开实施例的适于实现认证方法的计算机系统1500的方框图。图15示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图15所示,根据本公开实施例的计算机系统1500包括处理器1501,其可以根据存储在只读存储器(rom)1502中的程序或者从存储部分1508加载到随机访问存储器(ram)1503中的程序而执行各种适当的动作和处理。处理器1501例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器1501还可以包括用于缓存用途的板载存储器。处理器1501可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在ram1503中,存储有系统1500操作所需的各种程序和数据。处理器1501、rom1502以及ram1503通过总线1504彼此相连。处理器1501通过执行rom1502和/或ram1503中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom1502和ram1503以外的一个或多个存储器中。处理器1501也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,系统1500还可以包括输入/输出(i/o)接口1505,输入/输出(i/o)接口1505也连接至总线1504。系统1500还可以包括连接至i/o接口1505的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1507;包括硬盘等的存储部分1508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1509。通信部分1509经由诸如因特网的网络执行通信处理。驱动器1510也根据需要连接至i/o接口1505。可拆卸介质1511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1510上,以便于从其上读出的计算机程序根据需要被安装入存储部分1508。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1509从网络上被下载和安装,和/或从可拆卸介质1511被安装。在该计算机程序被处理器1501执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom1502和/或ram1503和/或rom1502和ram1503以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
1.一种认证方法,应用于认证服务端,所述认证服务端用于在客户端访问业务服务端的资源时对所述客户端进行授权和认证,所述方法包括:
接收所述客户端发送的访问授权请求;
响应于所述访问授权请求验证通过,获取动态令牌,所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端访问所述业务服务端的业务访问请求中所携带的令牌,所述第二令牌为用于更新所述第一令牌的令牌更新请求中所携带的令牌;以及
将所述动态令牌发送至所述客户端。
2.根据权利要求1所述的方法,还包括:
接收所述客户端发送的所述业务访问请求;以及
响应于所述业务访问请求中的所述第一令牌的验证通过,将所述业务访问请求转发至所述业务服务端。
3.根据权利要求1所述的方法,还包括:
接收所述客户端发送的所述令牌更新请求;
响应于所述令牌更新请求中的所述第二令牌的验证通过,更新所述第一令牌;以及
将更新后的第一令牌发送给所述客户端。
4.根据权利要求3所述的方法,其中,所述更新所述第一令牌包括:
确定所述第一令牌的有效期是否截止;
若所述第一令牌的有效期截止,则获取新的第一令牌;或者
若所述第一令牌的有效期未截止,则延长所述第一令牌的有效期。
5.根据权利要求1所述的方法,其中,所述访问授权请求包括所述客户端的登陆用户的用户信息,所述获取动态令牌包括:
基于所述用户信息,通过加密算法生成所述动态令牌。
6.根据权利要求5所述的方法,其中,所述基于所述用户信息,通过加密算法生成所述动态令牌包括:
利用消息摘要算法对由所述客户端的身份信息、所述登陆用户的编码、当前时间以及第一随机数组合得到的字符串进行处理,得到所述第一令牌;
利用消息摘要算法对由所述客户端的身份信息、所述登陆用户的编码、所述当前时间以及第二随机数组合得到的字符串进行处理,得到所述第二令牌。
7.根据权利要求1所述的方法,还包括:
接收所述客户端发送的第三方令牌获取请求,所述第三方令牌获取请求用于获取提供给第三方应用的临时令牌,所述第三方令牌获取请求包括所述第一令牌、以及所述第三方应用服务端的身份信息;
在所述第三方令牌获取请求验证通过后,基于所述第三方应用服务端的身份信息获取所述临时令牌;以及
将所述临时令牌发送给所述客户端。
8.根据权利要求7所述的方法,还包括:
接收用于对第三方应用访问授权的临时访问授权请求,其中所述临时访问授权请求包括所述临时令牌;
在所述临时令牌验证通过后,获取第三方动态令牌,所述第三方动态令牌包括第三方第一令牌以及第三方第二令牌,其中所述第三方第一令牌的有效期短于所述第三方第二令牌,所述第三方第一令牌为所述第三方应用服务端调用所述客户端以访问所述业务服务端的请求中所携带的令牌,所述第三方第二令牌为调用所述客户端以更新所述第三方第一令牌的请求中所携带的令牌;以及
将所述第三方动态令牌发送给所述第三方应用。
9.一种认证方法,应用于客户端,其中,所述客户端在访问业务服务端的资源时利用认证服务端对所述客户端进行授权和认证;所述方法包括:
向所述认证服务端发送访问授权请求;
接收所述认证服务端发送的动态令牌,其中所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端访问所述业务服务端的业务访问请求中所携带的令牌,所述第二令牌为更新所述第一令牌的令牌更新请求中所携带的令牌。
10.根据权利要求9所述的方法,还包括:
向所述认证服务端发送所述业务访问请求;
在所述业务访问请求中的所述第一令牌通过所述认证服务端的验证的情况下,接收所述业务服务端的对所述业务访问请求的响应;或者,
在所述业务访问请求中的所述第一令牌未通过所述认证服务端的验证的情况下,接收所述认证服务端发送的所述客户端身份认证不通过的信息。
11.根据权利要求9所述的方法,还包括:
在所述第一令牌失效后,向所述认证服务端发送所述令牌更新请求;以及
接收所述认证服务端的反馈信息,其中,若所述第一令牌更新成功,则所述反馈信息包括更新后的第一令牌。
12.根据权利要求9所述的方法,还包括:
接收第三方应用服务端的第一调用请求,所述第一调用请求用于所述第三方应用服务端请求访问授权;
基于所述第一调用请求向所述认证服务端发送第三方令牌获取请求,所述第三方令牌获取请求用于获取提供给第三方应用服务端的临时令牌的,所述第三方令牌获取请求包括所述第一令牌、以及所述第三方应用服务端的身份信息;
在所述第一令牌验证通过的情况下,接收所述认证服务端反馈的所述临时令牌;以及
基于所述第三方应用服务端的身份信息,将所述临时令牌发送给所述第三方应用服务端。
13.一种认证方法,应用于第三方应用服务端,所述第三方应用服务端通过调用宿主应用的客户端来访问业务服务端的资源,以及所述客户端在访问业务服务端的资源时利用认证服务端对所述客户端进行授权和认证,所述方法包括:
向所述客户端发送第一调用请求,所述第一调用请求用于所述第三方应用服务端请求访问授权,所述第一调用请求包括所述第三方应用服务端的身份信息;
接收所述客户端基于所述第一调用请求而反馈的临时令牌,所述临时令牌为所述认证服务端基于所述第三方应用服务端的身份信息而获得的令牌;
向所述认证服务端发送获取第三方动态令牌的临时访问授权请求,其中所述临时访问授权请求包括所述临时令牌;以及
在所述临时令牌验证通过的情况下,接收所述认证服务端发送的所述第三方动态令牌,所述第三方动态令牌包括第三方第一令牌、以及第三方第二令牌,其中所述第三方第一令牌的有效期短于所述第三方第二令牌,所述第三方第一令牌为所述第三方应用服务端调用所述客户端以访问所述业务服务端的请求中所携带的令牌,所述第三方第二令牌为调用所述客户端以更新所述第三方第一令牌的请求中所携带的令牌。
14.一种认证装置,设置于认证服务端,所述认证服务端用于在客户端访问业务服务端的资源时对所述客户端进行授权和认证,所述装置包括:
第一接收模块,用于接收所述客户端发送的访问授权请求;
动态令牌获取模块,用于响应于所述访问授权请求验证通过,获取动态令牌,所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端访问所述业务服务端的业务访问请求中所携带的令牌,所述第二令牌为用于更新所述第一令牌的令牌更新请求中所携带的令牌;以及
动态令牌发送模块,用于将所述动态令牌发送至所述客户端。
15.一种认证装置,设置于客户端,其中,所述客户端在访问业务服务端的资源时利用认证服务端对所述客户端进行授权和认证;所述装置包括:
第一发送模块,用于向所述认证服务端发送访问授权请求;
动态令牌接收模块,用于接收所述认证服务端发送的动态令牌,其中所述动态令牌包括第一令牌和第二令牌,其中所述第一令牌的有效期短于所述第二令牌,其中所述第一令牌为所述客户端访问所述业务服务端的业务访问请求中所携带的令牌,所述第二令牌为更新所述第一令牌的令牌更新请求中所携带的令牌。
16.一种认证装置,设置于第三方应用服务端,所述第三方应用服务端通过调用宿主应用的客户端来访问业务服务端的资源,以及所述客户端在访问业务服务端的资源时利用认证服务端对所述客户端进行授权和认证,所述装置包括:
访问授权调用模块,用于向所述客户端发送第一调用请求,所述第一调用请求用于所述第三方应用服务端请求访问授权,所述第一调用请求包括所述第三方应用服务端的身份信息;
临时令牌接收模块,用于接收所述客户端基于所述第一调用请求而反馈的临时令牌,所述临时令牌为所述认证服务端基于所述第三方应用服务端的身份信息而获得的令牌;
第三方令牌请求模块,用于向所述认证服务端发送获取第三方动态令牌的临时访问授权请求,其中所述临时访问授权请求包括所述临时令牌;以及
第三方令牌接收模块,用于在所述临时令牌验证通过的情况下,接收所述认证服务端发送的所述第三方动态令牌,所述第三方动态令牌包括第三方第一令牌、以及第三方第二令牌,其中所述第三方第一令牌的有效期短于所述第三方第二令牌,所述第三方第一令牌为所述第三方应用服务端调用所述客户端以访问所述业务服务端的请求中所携带的令牌,所述第三方第二令牌为调用所述客户端以更新所述第三方第一令牌的请求中所携带的令牌。
17.一种认证系统,包括:
一个或多个存储器,存储有可执行指令;以及
一个或多个处理器,执行所述可执行指令,以实现:
根据权利要求1~8任一项所述的方法;或者
根据权利要求9~12任一项所述的方法;或者
根据权利要求13所述的方法。
18.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行:
根据权利要求1~8任一项所述的方法;或者
根据权利要求9~12任一项所述的方法;或者
根据权利要求13所述的方法。
技术总结