授权方法和装置、授权码的生成方法和装置
技术领域
本申请涉及互联网技术领域,尤其涉及一种授权方法和装置、授权码的生成方法和装置。
背景技术
开放授权(Open Authorization;以下简称:OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源,例如:照片、视频和/或联系人列表等,而无需将用户名和密码提供给第三方应用。
现在,互联网应用的全球化趋势日益明显,网站需要有相应的技术方案让全球用户都能访问。但是,现有的OAuth技术,用户在全球的不同区域请求授权的时候,访问速度不能得到保证,导致用户体验较差。
发明内容
本申请的目的旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种授权方法。该方法将客户端的位置信息植入授权码中,从而可以实现根据客户端的位置信息,由生成授权码的授权服务器向客户端发送授权信息,进而可以提高用户的访问速度,提高用户体验。
本申请的第二个目的在于提出一种授权码的生成方法。
本申请的第三个目的在于提出一种授权装置。
本申请的第四个目的在于提出一种授权码的生成装置。
为了实现上述目的,本申请第一方面实施例的授权方法,包括:接收客户端发送的授权码,所述授权码中包括所述客户端的位置信息;根据所述客户端的位置信息判断所述授权码是否由所述客户端当前访问的授权服务器生成;如果是,则根据所述授权码获取所述授权码对应的授权信息,并将所述授权信息发送给所述客户端。
本申请实施例的授权方法中,接收客户端发送的授权码之后,根据上述授权码中包括的上述客户端的位置信息判断上述授权码是否由上述客户端当前访问的授权服务器生成;如果是,则根据上述授权码获取上述授权码对应的授权信息,并将上述授权信息发送给上述客户端,从而可以实现根据客户端的位置信息,由生成授权码的授权服务器向客户端发送授权信息,进而可以提高用户的访问速度,提高用户体验。
为了实现上述目的,本申请第二方面实施例的授权码的生成方法,包括:接收客户端发送的授权码获取请求;生成所述客户端对应的授权码,所述授权码中包括所述客户端的位置信息。
本申请实施例的授权码的生成方法中,接收客户端发送的授权码获取请求之后,生成上述客户端对应的授权码,上述授权码中包括上述客户端的位置信息,从而可以实现在生成授权码的过程中加入上述客户端的位置信息,进而可以由生成授权码的授权服务器向客户端发送授权信息,可以提高用户的访问速度,提高用户体验。
为了实现上述目的,本申请第三方面实施例的授权装置,包括:接收模块,用于接收客户端发送的授权码,所述授权码中包括所述客户端的位置信息;判断模块,用于根据所述客户端的位置信息判断所述接收模块接收的授权码是否由所述客户端当前访问的授权装置生成;获取模块,用于当所述判断模块确定所述授权码由所述客户端当前访问的授权装置生成时,根据所述授权码获取所述授权码对应的授权信息;发送模块,用于将所述获取模块获取的授权信息发送给所述客户端。
本申请实施例的授权装置中,接收模块接收客户端发送的授权码之后,判断模块根据上述授权码中包括的上述客户端的位置信息判断上述授权码是否由上述客户端当前访问的授权装置生成;如果是,则获取模块根据上述授权码获取上述授权码对应的授权信息,并由发送模块将上述授权信息发送给上述客户端,从而可以实现根据客户端的位置信息,由生成授权码的授权装置向客户端发送授权信息,进而可以提高用户的访问速度,提高用户体验。
为了实现上述目的,本申请第四方面实施例的授权码的生成装置,包括:接收模块,用于接收客户端发送的授权码获取请求;生成模块,用于生成所述客户端对应的授权码,所述授权码中包括所述客户端的位置信息。
本申请实施例的授权码的生成装置中,接收模块接收客户端发送的授权码获取请求之后,生成模块生成上述客户端对应的授权码,上述授权码中包括上述客户端的位置信息,从而可以实现在生成授权码的过程中加入上述客户端的位置信息,进而可以由生成授权码的授权服务器向客户端发送授权信息,可以提高用户的访问速度,提高用户体验。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请授权方法一个实施例的流程图;
图2为本申请授权方法另一个实施例的流程图;
图3为本申请授权方法再一个实施例的流程图;
图4为本申请授权码的生成方法一个实施例的流程图;
图5为本申请授权装置一个实施例的结构示意图;
图6为本申请授权装置另一个实施例的结构示意图;
图7为本申请授权码的生成装置一个实施例的结构示意图;
图8为本申请授权码的生成装置另一个实施例的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。相反,本申请的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
图1为本申请授权方法一个实施例的流程图,如图1所示,上述授权方法可以包括:
步骤101,接收客户端发送的授权码(authorization_code),上述授权码中包括上述客户端的位置信息。
本实施例中,上述客户端发送的授权码是由距离上述客户端最近的授权服务器生成的。在具体实现时,可以通过虚拟因特网协议(Virtual Internet Protocol;以下简称:VIP)来实现由距离上述客户端最近的授权服务器为上述客户端生成授权码。
步骤102,根据上述客户端的位置信息判断上述授权码是否由上述客户端当前访问的授权服务器生成。如果是,则执行步骤103;如果上述授权码不是由上述客户端当前访问的授权服务器生成,则执行步骤104。
步骤103,根据上述授权码获取上述授权码对应的授权信息(access_token),并将上述授权信息发送给上述客户端。本次流程结束。
步骤104,根据上述客户端的位置信息确定生成上述授权码的授权服务器。
步骤105,将上述授权码发送给生成上述授权码的授权服务器,以便生成上述授权码的授权服务器根据上述授权码获取上述授权码对应的授权信息,并将上述授权信息发送给上述客户端。本次流程结束。
上述授权方法中,接收客户端发送的授权码之后,根据上述授权码中包括的上述客户端的位置信息判断上述授权码是否由上述客户端当前访问的授权服务器生成;如果是,则根据上述授权码获取上述授权码对应的授权信息,并将上述授权信息发送给上述客户端,从而可以实现根据客户端的位置信息,由生成授权码的授权服务器向客户端发送授权信息,进而可以提高用户的访问速度,提高用户体验。
图2为本申请授权方法另一个实施例的流程图,如图2所示,步骤101之前还可以包括:
步骤201,接收客户端发送的授权码获取请求。
步骤202,生成上述客户端对应的授权码,上述授权码中包括上述客户端的位置信息。
本实施例中,上述授权码是由距离上述客户端最近的授权服务器生成的。在具体实现时,可以通过VIP来实现由距离上述客户端最近的授权服务器为上述客户端生成授权码。
本实施例改进了OAuth的第二个版本(OAuth2)的授权码类型的开放授权中授权码的生成过程,在为上述客户端生成授权码的时候加入了上述客户端的位置信息,例如加上位置标志“env”前缀,并以“_”为分隔符,同时按照OAuth中的授权码生成算法生成授权码,最后将这三部分合成一个新的授权码,作为上述客户端的授权码。
步骤203,将上述授权码发送给上述客户端。
本实施例中,将上述授权码发送给上述客户端之后,上述客户端就可以用上述授权码去访问授权服务器以交换所需的授权信息(access_token)。在授权服务器接收到上述客户端发送的授权码之后,在步骤102,授权服务器可以检查上述授权码的前缀是否为当前的授权服务器所颁发的标志“env”,如果是,则可以确定上述授权码是由当前的授权服务器生成的,然后,该授权服务器可以执行步骤103,根据上述授权码获取上述授权码对应的授权信息,并将上述授权信息发送给上述客户端。如果不是,则可以确定上述授权码不是由当前的授权服务器生成的,然后该授权服务器需要执行步骤104~步骤105,根据上述客户端的位置信息确定生成上述授权码的授权服务器,将上述授权码发送给生成上述授权码的授权服务器,以便生成上述授权码的授权服务器根据上述授权码获取上述授权码对应的授权信息,并将上述授权信息发送给上述客户端。
图3为本申请授权方法再一个实施例的流程图,如图3所示,步骤202之后,还可以包括:
步骤301,存储上述授权码。
本实施例中,在生成上述授权码之后,授权服务器可以将上述授权码存储在本地,也可以将上述授权码存储在上述授权服务器连接的授权码存储服务器中,本实施例对此不作限定。
如果上述授权码存储在授权服务器中,则在根据上述授权码获取上述授权码对应的授权信息时,授权服务器是根据上述授权码从本地存储中获取上述授权码对应的授权信息;
如果上述授权码存储在授权服务器连接的授权码存储服务器中,则在根据上述授权码获取上述授权码对应的授权信息时,授权服务器是根据上述授权码从授权服务器连接的授权码存储服务器中获取上述授权码对应的授权信息。
本实施例中,步骤203与步骤301可以并行执行,也可以先后执行,本实施例对步骤203与步骤301的执行顺序不作限定,但图3中以步骤301在步骤203之前执行为例示出。
本实施例可以实现根据客户端的位置信息,由生成授权码的授权服务器向客户端发送授权信息,进而可以提高用户的访问速度,提高用户体验。
本申请图1~图3所示实施例中,是将上述客户端的位置信息添加至上述客户端的授权码中,完全兼容目前的OAuth认证方式,但本申请并不仅限于此,上述客户端的位置信息也可以通过OAuth认证过程中的超文本传输协议统一资源定位符(HyperText TransferProtocol Uniform Resource Locator;以下简称:HTTP URL)参数来传递,本实施例对此不作限定。
图4为本申请授权码的生成方法一个实施例的流程图,如图4所示,上述授权码的生成方法可以包括:
步骤401,接收客户端发送的授权码获取请求。
步骤402,生成上述客户端对应的授权码,上述授权码中包括上述客户端的位置信息。
本实施例中,上述授权码是由距离上述客户端最近的授权服务器生成的。在具体实现时,可以通过VIP来实现由距离上述客户端最近的授权服务器为上述客户端生成授权码。
本实施例改进了OAuth的第二个版本(OAuth2)的授权码类型的开放授权中授权码的生成过程,在为上述客户端生成授权码的时候加入了上述客户端的位置信息,例如加上位置标志“env”前缀,并以“_”为分隔符,同时按照OAuth中的授权码生成算法生成授权码,最后将这三部分合成一个新的授权码,作为上述客户端的授权码。
进一步地,步骤402之后,还可以将上述授权码发送给上述客户端,以及存储上述授权码。
本实施例中,将上述授权码发送给上述客户端之后,上述客户端就可以用上述授权码去访问授权服务器以交换所需的授权信息(access_token)。另外,在生成上述授权码之后,授权服务器可以将上述授权码存储在本地,也可以将上述授权码存储在上述授权服务器连接的授权码存储服务器中,本实施例对此不作限定。
如果上述授权码存储在授权服务器中,则在根据上述授权码获取上述授权码对应的授权信息时,授权服务器是根据上述授权码从本地存储中获取上述授权码对应的授权信息;
如果上述授权码存储在授权服务器连接的授权码存储服务器中,则在根据上述授权码获取上述授权码对应的授权信息时,授权服务器是根据上述授权码从授权服务器连接的授权码存储服务器中获取上述授权码对应的授权信息。
上述授权码的生成方法中,接收客户端发送的授权码获取请求之后,生成上述客户端对应的授权码,上述授权码中包括上述客户端的位置信息,从而可以实现在生成授权码的过程中加入上述客户端的位置信息,进而可以由生成授权码的授权服务器向客户端发送授权信息,可以提高用户的访问速度,提高用户体验。
图5为本申请授权装置一个实施例的结构示意图,本实施例中的授权装置可以作为授权服务器,或者授权服务器的一部分实现本申请图1~图3所示实施例的流程。
如图5所示,上述授权装置可以包括:接收模块51、判断模块52、获取模块53和发送模块54;
其中,接收模块51,用于接收客户端发送的授权码(authorization_code),上述授权码中包括上述客户端的位置信息;本实施例中,上述客户端发送的授权码是由距离上述客户端最近的授权装置生成的。在具体实现时,可以通过VIP来实现由距离上述客户端最近的授权装置为上述客户端生成授权码。
判断模块52,用于根据上述客户端的位置信息判断接收模块51接收的授权码是否由上述客户端当前访问的授权装置生成;
获取模块53,用于当判断模块52确定上述授权码由上述客户端当前访问的授权装置生成时,根据上述授权码获取上述授权码对应的授权信息;
发送模块54,用于将获取模块53获取的授权信息发送给上述客户端。
上述授权装置中,接收模块51接收客户端发送的授权码之后,判断模块52根据上述授权码中包括的上述客户端的位置信息判断上述授权码是否由上述客户端当前访问的授权装置生成;如果是,则获取模块53根据上述授权码获取上述授权码对应的授权信息,并由发送模块54将上述授权信息发送给上述客户端,从而可以实现根据客户端的位置信息,由生成授权码的授权装置向客户端发送授权信息,进而可以提高用户的访问速度,提高用户体验。
图6为本申请授权装置另一个实施例的结构示意图,与图5所示的授权装置相比,不同之处在于,图6所示的授权装置还可以包括:确定模块55;
确定模块55,用于当判断模块52确定上述授权码不是由上述客户端当前访问的授权装置生成时,根据上述客户端的位置信息确定生成上述授权码的授权装置;
发送模块54,还用于将上述授权码发送给生成上述授权码的授权装置,以便上述生成上述授权码的授权装置根据上述授权码获取上述授权码对应的授权信息,并将上述授权信息发送给上述客户端。
进一步地,上述授权装置还可以包括:生成模块56;
接收模块51,还用于在接收客户端发送的授权码之前,接收客户端发送的授权码获取请求。
生成模块56,用于生成上述客户端对应的授权码,上述授权码中包括上述客户端的位置信息;本实施例中,上述授权码是由距离上述客户端最近的授权装置中的生成模块56生成的。在具体实现时,可以通过VIP来实现由距离上述客户端最近的授权装置为上述客户端生成授权码。
本实施例改进了OAuth中授权码的生成过程,生成模块56在为上述客户端生成授权码的时候加入了上述客户端的位置信息,例如加上位置标志“env”前缀,并以“_”为分隔符,同时按照OAuth中的授权码生成算法生成授权码,最后将这三部分合成一个新的授权码,作为上述客户端的授权码。
发送模块54,还用于将上述授权码发送给上述客户端。
本实施例中,发送模块54将上述授权码发送给上述客户端之后,上述客户端就可以用上述授权码去访问授权装置以交换所需的授权信息(access_token)。在接收模块51接收到上述客户端发送的授权码之后,判断模块52可以检查上述授权码的前缀是否为当前的授权装置所颁发的标志“env”,如果是,则可以确定上述授权码是由当前的授权装置生成的,然后,获取模块53可以根据上述授权码获取上述授权码对应的授权信息,并由发送模块54将上述授权信息发送给上述客户端。如果不是,则判断模块52可以确定上述授权码不是由当前的授权装置生成的,然后确定模块55需要根据上述客户端的位置信息确定生成上述授权码的授权装置,由发送模块54将上述授权码发送给生成上述授权码的授权装置,以便生成上述授权码的授权装置根据上述授权码获取上述授权码对应的授权信息,并将上述授权信息发送给上述客户端。
进一步地,上述授权装置还可以包括:存储模块57,用于在生成模块56生成上述客户端对应的授权码之后,存储上述授权码。
本实施例中,在生成模块56生成上述授权码之后,存储模块57可以将上述授权码存储在本地,也可以将上述授权码存储在上述授权装置连接的授权码存储服务器中,本实施例对此不作限定。
如果上述授权码存储在授权装置中,则在获取模块53根据上述授权码获取上述授权码对应的授权信息时,是根据上述授权码从本地存储中获取上述授权码对应的授权信息;
如果上述授权码存储在授权装置连接的授权码存储服务器中,则在获取模块53根据上述授权码获取上述授权码对应的授权信息时,是根据上述授权码从授权装置连接的授权码存储服务器中获取上述授权码对应的授权信息。
上述授权装置可以实现根据客户端的位置信息,由生成授权码的授权装置向客户端发送授权信息,进而可以提高用户的访问速度,提高用户体验。
图7为本申请授权码的生成装置一个实施例的结构示意图,本实施例中的授权码的生成装置可以实现本发明图4所示实施例的流程,本实施例中的授权码的生成装置可以设置在授权服务器中,也可以为单独的生成授权码的服务器,本实施例对上述授权码的生成装置的存在形式不作限定。
如图7所示,上述授权码的生成装置可以包括:接收模块71和生成模块72;
其中,接收模块71,用于接收客户端发送的授权码获取请求;
生成模块72,用于生成上述客户端对应的授权码,上述授权码中包括上述客户端的位置信息。
本实施例中,生成模块72位于距离上述客户端最近的授权码的生成装置中。在具体实现时,可以通过VIP来实现由距离上述客户端最近的授权码的生成装置中的生成模块72为上述客户端生成授权码。
本实施例改进了OAuth中授权码的生成过程,生成模块72在为上述客户端生成授权码的时候加入了上述客户端的位置信息,例如加上位置标志“env”前缀,并以“_”为分隔符,同时按照OAuth中的授权码生成算法生成授权码,最后将这三部分合成一个新的授权码,作为上述客户端的授权码。
上述授权码的生成装置中,接收模块71接收客户端发送的授权码获取请求之后,生成模块72生成上述客户端对应的授权码,上述授权码中包括上述客户端的位置信息,从而可以实现在生成授权码的过程中加入上述客户端的位置信息,进而可以由生成授权码的授权服务器向客户端发送授权信息,可以提高用户的访问速度,提高用户体验。
图8为本申请授权码的生成装置另一个实施例的结构示意图,与图7所示的授权码的生成装置相比,不同之处在于,图8所示的授权码的生成装置还可以包括:发送模块73和存储模块74;
发送模块73,用于在生成模块72生成上述客户端对应的授权码之后,将上述授权码发送给上述客户端;
存储模块74,用于在生成模块72生成上述客户端对应的授权码之后,存储上述授权码。
本实施例中,发送模块73将上述授权码发送给上述客户端之后,上述客户端就可以用上述授权码去访问授权服务器以交换所需的授权信息(access_token)。另外,在生成模块72生成上述授权码之后,存储模块74可以将上述授权码存储在授权码的生成装置中,也可以将上述授权码存储在上述授权码的生成装置连接的授权码存储服务器中,本实施例对此不作限定。
上述授权码的生成装置可以实现在生成授权码的过程中加入上述客户端的位置信息,进而可以由生成授权码的授权服务器向客户端发送授权信息,可以提高用户的访问速度,提高用户体验。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(Programmable Gate Array;以下简称:PGA),现场可编程门阵列(Field ProgrammableGate Array;以下简称:FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。