本发明实施例涉及计算机技术领域,尤其涉及一种访问控制方法及装置。
背景技术:
目前,在终端设备(例如手机、电脑等设备)中可以安装应用程序,终端设备可以通过应用程序与应用程序对应的服务器交互,以获取服务器提供的数据。
为了保证终端设备从服务器中获取数据的安全性,终端设备通常对服务器进行https访问。在https访问过程中,服务器向终端设备发送证书,终端设备对证书进行验证,在终端设备对证书验证通过后,终端设备和服务器再进行通信。目前,通常在终端设备中预存一个证书库,该证书库中包括多种权威机构颁发的权威证书,以使终端设备可以通过该证书库中的证书,对服务器发送的证书进行验证。终端设备根据证书库中的证书通常可以对权威证书验证通过,对非权威证书可能无法验证通过。
在实际应用过程中,应用程序中可以包括第三方访问接口,以使用户可以通过应用程序中的第三方接口访问第三服务器。在终端设备访问主服务器(应用程序对应的服务器)时,由主服务向终端设备发送主服务器的证书,在终端设备访问第三方服务器(第三方应用程序对应的服务器)时,由第三方服务器向终端设备发送证书。应用程序厂商可以确定主服务器的证书为权威的,以使终端设备可以对主服务的证书验证通过,但是,无法保证各个第三方服务器的证书也为权威的证书,进而无法确保终端设备对第三方服务器的证书验证通过。当终端设备无法对第三方服务器的证书验证通过时,终端设备无法通过应用程序访问第三方应用程序,使得访问异常,进而导致访问控制的可靠性较差。
技术实现要素:
本发明实施例提供一种访问控制方法及装置,提高了访问控制的可靠性。
第一方面,本发明实施例提供一种访问控制方法,应用于主服务器对应的代理服务器,所述方法包括:
接收终端设备发送的、对第三方服务器进行访问的第一访问请求;
向所述终端设备发送所述主服务器的证书,以使所述终端设备对所述证书进行验证;
向所述第三方服务器请求获取所述第一访问请求对应的目标数据;
在确定所述终端设备对接收到的证书验证通过后,根据接收到的证书对所述目标数据进行加密,并向所述终端设备发送加密后的目标数据。
在一种可能的实施方式中,在确定所述终端设备对接收到的证书验证通过后,根据接收到的证书对所述目标数据进行加密,包括:
接收所述终端设备发送的私钥,所述私钥为所述终端设备根据接收到的证书对随机数加密得到的,所述私钥用于指示所述终端设备对所述证书验证通过;
根据所述私钥加密所述目标数据。
在另一种可能的实施方式中,所述第一访问请求中包括所述目标数据的统一资源定位符url地址,相应的,向所述第三方服务器请求获取所述第一访问请求对应的目标数据,包括:
根据所述url地址,向所述第三方服务器发送数据获取请求;
接收所述第三方服务器发送的、通过预设加密算法加密的数据;
根据所述预设加密算法对应的解密算法解密所述数据,得到所述目标数据。
第二方面,本发明实施例提供一种访问控制方法,应用于终端设备,所述终端设备中安装有应用程序,所述方法包括:
在向代理服务器发送对第三方服务器进行访问的第一访问请求之后,接收所述代理服务器发送的主服务器的证书,所述主服务器为所述应用程序对应的服务器;
根据所述终端设备中的预设证书库和/或所述应用程序中内置的预设证书,对接收到的证书进行验证,其中,所述预设证书为内置在所述应用程序中的所述主服务器的证书。
在一种可能的实施方式中,在向代理服务器发送对第三方服务器进行访问的第一访问请求之前,还包括
接收用户对第三方访问接口的点击操作;
获取所述第三方访问接口对应的所述第三方服务器;
确定向所述第三方服务器的标识在预设服务器标识集合中。
在另一种可能的实施方式中,若确定所述第三方服务器不在所述预设服务器标识集合中,所述方法包括:
向所述第三方服务器发送第二访问请求;
接收所述第三方服务器发送的、所述第三方服务器的证书;
确定对接收到的所述第三方服务器的证书验证通过。
在另一种可能的实施方式中,根据所述终端设备中的预设证书库和/或所述应用程序中内置的预设证书,对接收到的证书进行验证,包括:
根据所述预设证书库中的证书,对接收到的证书进行验证;
若验证未通过,则判断所述预设证书与接收到的证书是否相同,若是,则对接收到的证书验证通过,若否,则对接收到的证书验证未通过。
第三方面,本发明实施例提供一种访问控制装置,应用于主服务器对应的代理服务器,包括接收模块、发送模块、获取模块和加密模块,其中,
所述接收模块用于,接收终端设备发送的、对第三方服务器进行访问的第一访问请求;
所述发送模块用于,向所述终端设备发送所述主服务器的证书,以使所述终端设备对所述证书进行验证;
所述获取模块用于,向所述第三方服务器请求获取所述第一访问请求对应的目标数据;
所述加密模块用于,在确定所述终端设备对接收到的证书验证通过后,根据接收到的证书对所述目标数据进行加密;
所述发送模块还用于,向所述终端设备发送加密后的目标数据。
在一种可能的实施方式中,所述加密模块具体用于:
接收所述终端设备发送的私钥,所述私钥为所述终端设备根据接收到的证书对随机数加密得到的,所述私钥用于指示所述终端设备对所述证书验证通过;
根据所述私钥加密所述目标数据。
在另一种可能的实施方式中,所述第一访问请求中包括所述目标数据的统一资源定位符url地址,相应的,所述获取模块具体用于:
根据所述url地址,向所述第三方服务器发送数据获取请求;
接收所述第三方服务器发送的、通过预设加密算法加密的数据;
根据所述预设加密算法对应的解密算法解密所述数据,得到所述目标数据。
第四方面,本发明实施例提供一种访问控制方法,应用于终端设备,所述终端设备中安装有应用程序,包括发送模块、接收模块、验证模块,其中,
所述接收模块用于,在所述发送模块向代理服务器发送对第三方服务器进行访问的第一访问请求之后,接收所述代理服务器发送的主服务器的证书,所述主服务器为所述应用程序对应的服务器;
所述验证模块用于,根据所述终端设备中的预设证书库和/或所述应用程序中内置的预设证书,对接收到的证书进行验证,其中,所述预设证书为内置在所述应用程序中的所述主服务器的证书。
在一种可能的实施方式中,所述装置还包括获取模块和确定模块,其中,
所述接收模块还用于,在所述发送模块向代理服务器发送对第三方服务器进行访问的第一访问请求之前,接收用户对第三方访问接口的点击操作;
所述获取模块用于,获取所述第三方访问接口对应的所述第三方服务器;
所述确定模块用于,确定向所述第三方服务器的标识在预设服务器标识集合中。
在另一种可能的实施方式中,所述发送模块还用于,在所述确定模块确定若确定所述第三方服务器不在所述预设服务器标识集合中时,向所述第三方服务器发送第二访问请求;
所述接收模块还用于,接收所述第三方服务器发送的、所述第三方服务器的证书;
所述验证模块还用于,确定对接收到的所述第三方服务器的证书验证通过。
在另一种可能的实施方式中,所述验证模块具体用于:
根据所述预设证书库中的证书,对接收到的证书进行验证;
若验证未通过,则判断所述预设证书与接收到的证书是否相同,若是,则对接收到的证书验证通过,若否,则对接收到的证书验证未通过。
本发明实施例提供的访问控制方法及装置,在终端设备对第三方服务器访问时,终端设备向代理服务器发送对第三方服务器进行访问的第一访问请求,代理服务器向终端设备发送主服务器的证书,终端设备根据预设证书库和/或应用程序中的预设证书,对证书进行验证,这样,只要代理服务器向终端设备发送的证书未被篡改,即可保证终端设备对接收到的证书验证通过,进而可以保证终端设备可以通过代理服务器对第三方服务器进行正常访问,避免了由于对第三方服务器的证书验证不通过、而导致无法通过应用程序访问第三方服务器的问题,进而提高访问控制的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的访问控制方法的应用场景示意图;
图2为本发明实施例提供的访问控制方法的流程示意图一;
图3为本发明实施例提供的访问控制方法的流程示意图二;
图4为本发明实施例提供的一种访问控制装置的结构示意图;
图5为本发明实施例提供的另一种访问控制装置的结构示意图一;
图6为本发明实施例提供的另一种访问控制装置的结构示意图二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的访问控制方法的应用场景示意图。请参见图1,包括终端设备101、主服务器102、代理服务器103和第三方服务器104。在终端设备101中安装有应用程序,应用程序中包括第三方服务器的第三方访问接口。主服务器102和代理服务器103为终端设备101中的应用程序对应的服务器,其中,主服务器102用于提供应用程序所需数据信息,代理服务器103为主服务器102提供代理功能。第三方服务器104为终端设备101中的应用程序中的第三方访问接口对应的服务器。
在本申请中,当终端设备101需要通过应用程序获取主服务器102中的数据时,终端设备102直接对主服务器102进行https访问,主服务器102向终端设备发送主服务器102的证书。当终端设备101通过应用程序中的第三方访问接口访问第三方服务器时,终端设备101通过主服务器102的代理服务器103对第三服务器104进行https访问,在该过程中,第三方服务器104无需向终端设备101发送第三方服务器104的证书,而是由代理服务器102向终端设备101发送主服务器102的证书。
由上可知,在本申请中,无论终端设备101对主服务器102访问,还是对第三方服务器104访问,均向终端设备发送主服务器102的证书,以使终端设备101对主服务器102的证书进行验证,进而避免对第三方服务器的证书验证不通过而导致无法访问第三方服务器的问题。
下面,通过具体实施例对本申请所示的技术方案进行详细说明。需要说明的是,下面几个具体实施例可以相互结合,对于相同或相似的内容,在不同的实施例中不再进行赘述。
图2为本发明实施例提供的访问控制方法的流程示意图一。请参见图2,该方法可以包括:
s201、终端设备向代理服务器发送对第三方服务器进行访问的第一访问请求。
在本发明实施例中,第一访问请求为基于https的请求。
在终端设备中安装有应用程序,在应用程序中设置有对第三方服务器进行访问的第三方访问接口。可选的,第三方访问接口可以对应第三方服务器的一个链接。当用户对第三方访问接口进行预设操作时,例如点击操作,终端设备可以通过代理服务器访问第三方服务器。
可选的,终端设备向代理服务器发送对第三方服务器进行访问的第一访问请求。可选的,可以在第一访问请求中携带第三方服务器的一个url,以使代理服务器可以根据该url在第三方服务器中获取需要反馈给终端设备的内容。当然,第一访问请求中还可以包括其它内容,本发明实施例对此不作具体限定。
s202、代理服务器向终端设备发送主服务器的证书。
在本发明实施例中,代理服务器中存储的证书为主服务器的证书,因此,在代理服务器接收到第一访问请求之后,代理服务器向终端设备发送主服务器的证书。
s203、终端设备对接收到的证书进行验证。
可选的,在应用程序中预设有主服务器的证书,例如,可以在发布应用程序时,在应用程序中内置主服务器的证书。相应的,在终端设备接收到证书之后,终端设备可以根据终端设备中的预设证书库和/或应用程序中的预设证书,对证书进行验证。其中,预设证书库中包括多个权威机构发布的权威证书。
可选的,终端设备可以先根据预设证书库中的证书,对接收到的证书进行验证,若验证通过,则对主服务器的证书验证结束。若验证未通过,则判断主服务器的证书与应用程序中预设的主服务器的证书是否相同,若是,则对证书验证通过,若否,则对验证验证未通过。需要说明的是,终端设备通过预设证书库中的证书,对接收到的证书的验证过程可以参见现有技术中的任意一种过程,此处不再进行赘述。
当然,在实际应用过程中,也可以直接根据应用程序中内置的预设证书,对接收到的证书进行验证。
在该过程中,当终端设备中的证书库中包括的证书不够全面时,则终端设备根据预设证书库中的证书,可能无法对接收到的证书验证通过。此时,还可以根据应用程序中内置的预设证书,对接收到的证书进行验证,由于应用程序中内置的证书为主服务器的证书,该证书通常不会被攻击,当终端设备接收到的证书未被篡改时,终端设备接收到的证书即为主服务器的证书,则可以保证终端设备接收到的证书与应用程序中内置的预设证书一致,进而可以保证终端设备对接收到的证书验证通过。通过该方法,可以提高终端设备对接收到的证书进行验证的可靠性。
需要说明的是,终端设备对于主服务器直接发送的证书,也可以通过上述发送对接收到的证书进行验证。
s204、代理服务器向第三方服务器发送数据获取请求。
代理服务器在接收到终端设备发送的第一访问请求之后,可以根据第一访问请求,生成数据获取请求,并向第三方服务器发送数据获取请求。
s205、第三方服务器向代理服务器发送目标数据。
在第三方服务器接收到数据获取请求之后,获取对应的目标数据,并向代理服务器发送目标数据。
可选的,为了保证第三方服务器和代理服务器之间数据传递的安全性,第三方服务器可以按照和代理服务器的约定加密算法,对目标数据进行加密,并向代理服务器发送加密后的目标数据。
s206、在终端设备对接收到证书验证通过后,终端设备向代理服务器发送私钥,私钥为终端设备根据证书对随机数加密得到的。
在终端设备对接收到的证书验证通过之后,终端设备生成随机数,并通过接收到的证书对生成的随机数进行加密,得到私钥,并向代理服务器发送该私钥。
需要说明的是,s204-s205与s206可以顺序执行,也可以并行执行,当然,也可以先执行s206,再执行s04-s205,本发明实施例对此顺序不作具体限定。
当先执行s204-s205,再执行s206时,在终端设备对接收到的证书验证通过之前,代理服务器先从第三方服务器获取得到目标数据,这样,在终端设备对接收到的证书验证通过之后,代理服务器可以快速向终端设备发送目标数据,进而使得代理服务器向终端设备发送目标数据的效率较高。
当先执行s206,再执行s204-s205时,在终端设备对接收到的证书验证通过之后,代理服务器才向第三方服务器请求获取目标数据,相应的,在终端设备对接收到的证书未验证通过时,则代理服务器无需向第三方服务器请求获取目标数据,这样,可以避免代理服务器向第三方服务器请求不必要的目标数据,进而可以降低代理服务器的负载。
s207、代理服务器根据私钥加密目标数据。
在代理服务器接收到私钥之后,代理服务器根据私钥对目标数据进行加密。需要说明的是,代理服务器根据私钥对目标数据进行加密的过程可以参见现有技术中的加密过程,此次不再进行赘述。
s208、代理服务器向终端设备发送根据私钥加密后的目标数据。
需要说明的是,在代理服务器和终端设备本次通信的过程中,代理服务器和终端设备之间交互的数据均通过该私钥进行加密,本发明对此不再进行赘述。
本发明实施例提供的访问控制方法,在终端设备对第三方服务器访问时,终端设备向代理服务器发送对第三方服务器进行访问的第一访问请求,代理服务器向终端设备发送主服务器的证书,终端设备根据预设证书库和/或应用程序中的预设证书,对证书进行验证,这样,只要代理服务器向终端设备发送的证书未被篡改,即可保证终端设备对接收到的证书验证通过,进而可以保证终端设备可以通过代理服务器对第三方服务器进行正常访问,避免了由于对第三方服务器的证书验证不通过、而导致无法通过应用程序访问第三方服务器的问题。
在实际应用过程中,在应用程序中可能设置有多个第三方访问接口,应用程序厂商为了节约成本,可能仅对部分第三方访问接口对应的第三方服务器进行代理,即,终端设备通过代理服务器对部分第三方服务器进行访问。相应的,可以在应用程序中设置预设服务器标识集合,当第三方服务器的标识在该预设服务器标识集合中时,则通过代理服务器访问该第三方服务器,若否,则直接访问该第三方服务器。具体的,请参见图3所示的实施例。
图3为本发明实施例提供的访问控制方法的流程示意图二。在图2所示实施例的基础上,请参见图3,该方法可以包括:
s301、终端设备接收用户对第三方访问接口的点击操作。
s302、终端设备获取第三方访问接口对应的第三方服务器。
s303、终端设备判断第三方服务器的标识是否在预设服务器标识集合中。
若是,则执行s304-314。
若否,则执行s314-317。
预设服务器标识集合中包括多个服务器的标识,针对预设服务器标识集合中每一个标识对应的第三方服务器,终端设备访问该部分第三方服务器时,均需要通过代理服务器进行访问。
s304、终端设备向代理服务器发送对第三方服务器进行访问的第一访问请求,第一访问请求中包括目标数据的url地址。
s305、代理服务器向终端设备发送主服务器的证书。
s306、终端设备根据终端设备中的预设证书库和/或应用程序中的预设证书,对证书进行验证。
s307、在终端设备对接收到的证书验证通过之后,生成随机数,并根据接收到的证书对随机数进行加密,得到私钥。
s308、终端设备向代理服务器发送私钥。
s309、向第三方服务器发送数据获取请求。
s310、第三方服务器获取目标数据,并通过加密算法加密的目标数据。
s311、第三方服务器向代理服务器发送加密后的目标数据。
s312、代理服务器根据加密算法对应的解密算法,对加密的目标数据进行解密,得到目标数据。
s313、代理服务器根据私钥对目标数据进行加密。
s314、代理服务器向终端设备发送根据私钥加密的目标数据。
需要说明的是,s304-s314的执行过程可以参见图2所示的实施例,此处不再进行赘述。
s315、终端设备向第三方服务器发送第二访问请求。
s316、第三方服务器向终端设备发送第三方服务器的证书。
s317、终端设备确定对接收到的第三方服务器的证书验证通过。
在s317中,终端设备不对接收到的第三方服务器的证书进行验证,直接确定接收到的第三方服务器的证书验证通过。
需要说明是,在s317之后,终端设备生成随机数,并根据接收到的第三方服务器的证书对随机数进行加密,生成私钥,在终端设备和第三方服务器之后进行通信的过程中,相互传递的数据均采用私钥进行加密,本发明实施例对此不再进行赘述。
图4为本发明实施例提供的一种访问控制装置的结构示意图。该装置,应用于主服务器对应的代理服务器,请参见图4,该装置包括接收模块11、发送模块12、获取模块13和加密模块14,其中,
所述接收模块11用于,接收终端设备发送的、对第三方服务器进行访问的第一访问请求;
所述发送模块12用于,向所述终端设备发送所述主服务器的证书,以使所述终端设备对所述证书进行验证;
所述获取模块13用于,向所述第三方服务器请求获取所述第一访问请求对应的目标数据;
所述加密模块14用于,在确定所述终端设备对接收到的证书验证通过后,根据接收到的证书对所述目标数据进行加密;
所述发送模块12还用于,向所述终端设备发送加密后的目标数据。
本发明实施例提供的访问控制装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述加密模块14具体用于:
接收所述终端设备发送的私钥,所述私钥为所述终端设备根据接收到的证书对随机数加密得到的,所述私钥用于指示所述终端设备对所述证书验证通过;
根据所述私钥加密所述目标数据。
在另一种可能的实施方式中,所述第一访问请求中包括所述目标数据的统一资源定位符url地址,相应的,所述获取模块13具体用于:
根据所述url地址,向所述第三方服务器发送数据获取请求;
接收所述第三方服务器发送的、通过预设加密算法加密的数据;
根据所述预设加密算法对应的解密算法解密所述数据,得到所述目标数据。
本发明实施例提供的访问控制装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
图5为本发明实施例提供的另一种访问控制装置的结构示意图一。该装置应用于终端设备,所述终端设备中安装有应用程序。请参见图5,该装置可以包括发送模块21、接收模块22、验证模块23,其中,
所述接收模块22用于,在所述发送模块21向代理服务器发送对第三方服务器进行访问的第一访问请求之后,接收所述代理服务器发送的主服务器的证书,所述主服务器为所述应用程序对应的服务器;
所述验证模块23用于,根据所述终端设备中的预设证书库和/或所述应用程序中内置的预设证书,对接收到的证书进行验证,其中,所述预设证书为内置在所述应用程序中的所述主服务器的证书。
本发明实施例提供的访问控制装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
图6为本发明实施例提供的另一种访问控制装置的结构示意图二。在图5所示实施例的基础上,请参见图6,所述装置还包括获取模块24和确定模块25,其中,
所述接收模块22还用于,在所述发送模块21向代理服务器发送对第三方服务器进行访问的第一访问请求之前,接收用户对第三方访问接口的点击操作;
所述获取模块24用于,获取所述第三方访问接口对应的所述第三方服务器;
所述确定模块25用于,确定向所述第三方服务器的标识在预设服务器标识集合中。
在一种可能的实施方式中,所述发送模块21还用于,在所述确定模块25确定若确定所述第三方服务器不在所述预设服务器标识集合中时,向所述第三方服务器发送第二访问请求;
所述接收模块22还用于,接收所述第三方服务器发送的、所述第三方服务器的证书;
所述验证模块23还用于,确定对接收到的所述第三方服务器的证书验证通过。
在另一种可能的实施方式中,所述验证模块23具体用于:
根据所述预设证书库中的证书,对接收到的证书进行验证;
若验证未通过,则判断所述预设证书与接收到的证书是否相同,若是,则对接收到的证书验证通过,若否,则对接收到的证书验证未通过。
本发明实施例提供的访问控制装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例方案的范围。