具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种资源请求的方法,该方法中,用户注册有某云存储服务的账号,本实施例根据该账号体系对用户的资源请求进行鉴权。如图1所示,该方法包括:
101、服务器接收终端上报的资源请求,资源请求中携带有用于请求目标资源的URL。
当用户通过终端发送资源请求,请求账号A上传到云端存储的资源时,该资源请求可能是账号A的用户在登录账号A后发起的请求,也可能是非账号A用户登录账号B后发起的请求,还可能是非账号A用户在未登录云存储服务账号的情况下发起的请求,例如通过浏览器或其他APP页面发起的资源链接请求。本实施例中,仅认为前述第一种情况为合法的资源请求行为,发起该请求行为的用户为合法用户,即账号A用户在自己的账号A中请求下载本人此前在账号A中上传到云端的资源。
服务器接收到资源请求后,通过后续鉴权步骤对上述各种情况进行区分,并针对合法用户及非法用户分别作不同处理。
本实施例中所述的资源包括但不限于是图片、文本信息、流媒体文件、页面以及各种类型的文件,实际应用中,任何可以存储到云端并且能够通过URL唯一定位的数据资源均涵盖在本发明实施例的保护范围之内。
此外,本实施例中所述的服务器在网络架构层面,可以是一个集成了账号服务、资源服务、鉴权服务及存储服务等各种服务层业务于一体的独立服务器,也可以是由账号服务器、资源服务器、鉴权服务器及存储服务器等对应各服务层业务的服务器所组成的服务器集群,本实施例不对网络侧服务器的架构进行具体限制。
102、服务器从URL中获取令牌信息,令牌信息包含终端的账号信息。
在获得URL后,服务器从中解析获得令牌(token)信息,本发明实施例中,令牌信息用于携带资源请求发起方的账号信息,例如当账号A用户登录账号A发起资源请求时,令牌信息中携带账号A的账号信息;当账号B用户登录账号B发起资源请求时,令牌信息中携带账号B的账号信息。当用户在未登录云存储服务账号时发起资源请求时,URL中不携带令牌信息。
实际应用中,所述账号信息包括但不限于是账号名、密码、账号标识、账号绑定的手机号或邮箱、账号登录状态等信息。
103、服务器根据账号信息对资源请求进行鉴权。
如前所述,服务器进行鉴权的依据是令牌信息中携带的账号信息,鉴权的目的在于确定资源请求发起者是在登录自己合法账号的情况下请求下载本人此前在此账号中上传的资源,除此情况认为是鉴权成功执行步骤104外,其余所有情况均认为是鉴权失败执行步骤105。
104、若鉴权成功,则服务器根据URL查找存储的目标资源,并将目标资源发送给终端
当云存储服务使用自身的存储服务器存储用户资源时,服务器直接根据URL在存储服务器中查找目标资源;如果云存储服务租赁第三方存储服务,则还需要与第三方服务器进行资源存储确认、申请授权、接收目标资源等交互流程。本实施例不对服务器使用URL获取目标资源的实现方式进行具体限制。
105、若鉴权失败,则服务器向终端发送资源不可用提示。
当鉴权失败时,例如用户B在未登录云存储服务账号的情况下请求目标资源,或者用户B登录自己的账号B请求账号A上传的目标资源时,执行本步骤,服务器向终端发送403提示信息,提示用户资源不可用,取消通过URL请求目标资源的操作,并结束图1所示流程。
由此,对于非资源上传用户本人请求目标资源的情况,本实施例可以拒绝返回目标资源,从而使非授权用户无法获得其他用户的隐私数据。
进一步的,本发明实施例还提供了一种资源请求的方法,如图2所示,该方法包括:
201、服务器接收终端上报的资源请求,资源请求中携带有用于请求目标资源的URL。
在接收到资源请求时,服务器无法也无必要判断资源请求的来源,通过后续鉴权流程逐步对图1实施例中所述的三种情况进行区分识别,并给出不同的处理方式。
202、服务器从URL中获取令牌信息,令牌信息包含终端的账号信息。
在获得资源请求后,服务器首先对报文体进行解析获取其中的URL。然后根据预设的协议规范对URL的结构进行解析,从预定位置或根据预设字符查找令牌信息,并获取之。
需要说明的是,本实施例中,令牌信息是在发起资源请求时添加到URL中的,并且仅在登录云存储服务账号的情况下才会进行添加。并非所有资源请求中的URL都携带有令牌信息,例如对于未登录云存储服务账号时发起的资源请求,其URL中就不会携带令牌信息。当URL中未携带令牌信息时执行步骤203,当URL中携带有令牌信息时执行步骤204。
203、若URL中未携带令牌信息,则服务器取消鉴权流程,并直接向终端发送资源不可用提示。
当URL中未携带令牌信息时,说明用户(可能是合法用户也可能是未授权用户)在未登录账号的情况下请求资源,例如在通过各种手段获得目标资源的URL时,将其直接复制到浏览器页面的输入框中发起请求,或者在其他APP的WEB页面中复制URL发起请求,甚至对于某些非法APP,其可以后台侵入到云存储服务账号中获取用户资源的URL,然后使用URL向云端发起资源请求窃取用户资源。
对于此种情况,资源请求无论是合法用户发起的(即上传目标资源的用户)还是未授权用户发起的,由于请求行为未在账号登录状态下进行,因此服务器判定该请求行为为非法行为,服务器无需执行后续鉴权流程,直接执行步骤207向终端发送403提示信息,并取消图2中其他未执行的步骤。
204、若URL中携带有令牌信息,则服务器根据账号信息判断终端的账号是否处于登录状态。
当URL中携带有令牌信息时,可以表明该资源请求是在账号登录状态下发起的,但是据此还不能认为资源请求行为合法。本发明实施例中鉴权的原则是资源上传者在本人的账号下下载本人上传的资源。显然截止到步骤204,还未能满足上述原则,对于请求发起者登录的云存储服务账号是否为上传所述目标资源的账号,还不能获得明确结果。
本步骤中服务器需要对请求发起者登录的账号的异常状态进行识别,服务器从令牌信息中获取账号信息后,在后台的账号服务层查找该账号对应的登录状态,如果终端的账号处于未登录状态则服务器确定鉴权失败执行步骤207,并取消图2中其他未执行的步骤,如果处于登录状态则执行步骤205。
确定账号登录状态目的在于,判断请求发起者登录的账号是否为云存储服务的账号,而非其他应用账号。实际应用中,URL中的令牌信息可能会被伪造,或者其他应用中的URL中也可能携带有账号信息,此种情况下,如果不执行步骤204,则有可能存在非授权用户通过其他应用请求资源的问题。
此外,确定账号登录状态目的还在于,判断终端的云存储服务账号当前是否处于登录状态。通常令牌信息具有预设的有效时长,当令牌过期时,如果不对账号的登录状态进行判断,则有可能出现非授权用户使用其他云存储服务账号发起资源请求的问题。
205、若终端的账号处于登录状态,则服务器根据账号信息判断终端的账号是否为上传目标资源的账号。
当执行到本步骤时,仅能够确定终端使用的账号是云存储服务的账号并且该账号当前处于登录状态,还需要进一步判断该账号是否为与上传目标资源的账号同属一个账号。只有经过本步骤的确认才能够最终确定终端使用的账号是合法账号。
在账号上传资源时,服务器会将资源与账号的账号信息(例如账号标识)绑定进行存储。本步骤中服务器判断目标资源与账号信息之间是否存在预设的映射关系,若目标资源与账号信息之间存在映射关系,则确定终端的账号为上传目标资源的账号。具体的,服务器根据目标资源的资源标识在预设的映射关系表中查找目标资源关联的账号信息(例如账号标识),然后将查找到的账号信息与令牌信息中携带的账号信息进行比对,如果两者一致,则说明该目标资源为发起资源请求的账号上传的,即发起资源请求的账号与上传目标资源的账号为同一账号,否则两者账号为不同账号,该资源请求为非法请求。
若终端的账号为上传目标资源的账号,则服务器确定鉴权成功,否则确定鉴权失败。
206、若鉴权成功,则服务器根据URL查找存储的目标资源,并将目标资源发送给终端。
207、若鉴权失败,则服务器向终端发送资源不可用提示。
本实施例中,通过判断URL中是否携带令牌信息的机制识别终端是否在登录账号后发起了资源请求;通过判断账号登录状态的机制识别终端登录的账号是否为云存储服务的账号;通过目标资源与账号信息之间的映射关系匹配识别资源请求账号与资源上传账号是否为同一账号。通过上述三方面机制,本实施例能够有效防范未授权用户通过其他云存储账号或其他资源请求方式获取到合法用户账号内上传的数据资源。
如前所述,本实施例中的服务器可以为一个独立服务器也可以为一个服务器集群,下面,以服务器集群为例给出本发明实施例的一种资源请求的网络交互流程。在该交互流程基于的网络架构中,服务集群按照不同的服务层架设服务器,并通过第三方服务器进行资源存储。如图3所示,该流程包括:
1、资源服务层接收终端上报的资源请求;
2、资源服务层从URL中解析令牌信息;
3、若不存在令牌信息,则资源服务层向终端返回403提示信息;
4、若存在令牌信息,则资源服务层将令牌信息发送给账号服务层;
5、账号服务层根据账号信息验证用户是否登录云存储服务账号,并将验证结果返回给资源服务层;
6、若账号状态为未登录,则资源服务层向终端发送403提示信息;
7、若账号状态为登录,则资源服务层根据账号信息判断用户是否有下载资源的权限(即判断资源请求账号是否为资源上传账号);
8、若无资源下载权限,则资源服务层向终端返回403提示信息;
9、若有资源下载权限,则资源服务层调用授权方法访问OIS服务层;
10、OIS服务层根据URL、账号信息判断该账号下是否保存有请求的资源;
11、若不存在该资源,则OIS服务层向终端返回403提示信息;
12、若存在该资源,则OIS服务层向第三方存储服务器请求资源下载授权;
13、第三方服务器在对OIS服务层进行鉴权后,根据URL查找对应的资源并返回给OIS服务层;
14、OIS服务层读取第三方服务器返回的资源,并将该资源发送给终端。
上述网络架构中,第三方服务器实际可以为云存储服务方向第三方购买的数据存储服务,例如阿里的OSS服务,本实施例对第三方存储服务的形式不作具体限制。
下面,基于用户侧给出本发明实施例的几个应用场景,在下述应用场景中,用户A通过自己的合法账号A向云端上传了自己的身份证照片X。
场景1
用户B在通过某种手段获得身份证照片X的URL后,通过浏览器向网络侧请求下载该照片X。由于URL中未携带有令牌信息,因此服务器拒绝将照片X响应给资源请求并返回403提示信息。
场景2
用户B通过伪造手段或某种特定手段获得携带令牌信息的URL,并通过浏览器向网络侧请求下载该照片X。服务器检测用户B账号的登录状态,由于用户B未登录任何云存储服务账号,因此服务器拒绝将照片X响应给资源请求并返回403提示信息。
场景3
用户B登录自己的云存储服务账号B,并发起资源请求,请求下载用户A的身份证照片X。服务器根据令牌信息中的账号信息判断照片X不是账号B上传的照片,服务器拒绝将照片X响应给资源请求并返回403提示信息。
场景4
用户A登录自己的云存储服务账号A并发起资源请求,请求下载用户A的身份证照片X。服务器验证该URL中携带有令牌信息,账号A当前处于登录状态并且该照片X为账号A此前上传的照片,因此,服务器将该照片X返回给终端。
进一步的,作为对上述方法的实现,本发明实施例还提供了一种资源请求的装置。该装置位于服务器一侧,如图4所示,该装置包括:
接收单元41,用于接收终端上报的资源请求,资源请求中携带有用于请求目标资源的统一资源定位符URL;
获取单元42,用于从URL中获取令牌信息,令牌信息包含终端的账号信息;
鉴权单元43,用于根据账号信息对资源请求进行鉴权;
发送单元44,用于若鉴权成功,则根据URL查找存储的目标资源,并将目标资源发送给终端;
发送单元44还用于若鉴权失败,则向终端发送资源不可用提示。
进一步的,如图5所示,鉴权单元43包括第一判断模块431,用于:
根据账号信息判断终端的账号是否处于登录状态;
若终端的账号处于未登录状态,则确定鉴权失败。
进一步的,如图5所示,鉴权单元43包括第二判断模块432,用于:
若终端的账号处于登录状态,则根据账号信息判断终端的账号是否为上传目标资源的账号;
若终端的账号为上传目标资源的账号,则确定鉴权成功,否则确定鉴权失败。
进一步的,第二判断模块432用于:
判断目标资源与账号信息之间是否存在预设的映射关系;
若目标资源与账号信息之间存在映射关系,则确定终端的账号为上传目标资源的账号。
进一步的,发送单元44,用于若URL中未携带令牌信息,则取消鉴权流程,并直接向终端发送资源不可用提示。
进一步的,作为对上述方法的实现,本发明实施例还提供了一种资源请求的系统,如图6所示,该系统包括终端61及服务器62;
终端61,用于向服务器62上报资源请求,资源请求中携带有用于请求目标资源的统一资源定位符URL;
服务器62,用于从URL中获取令牌信息,令牌信息包含终端61的账号信息,根据账号信息对资源请求进行鉴权,若鉴权成功,则根据URL查找存储的目标资源,并将目标资源发送给终端61,若鉴权失败,则向终端61发送资源不可用提示。
进一步的,本发明实施例可以应用于汽车领域中,在一种实现方式中,上述终端61可以配置在汽车上,实际应用中,该终端61可以为汽车的中控系统,例如奥迪品牌汽车上的MMI中控系统。终端61通过移动网络与服务器62进行数据交互,完成上述图1、图2或图3所示流程。所述移动网络包括但不限于是:GSM、3G、4G、LTE等网络,当具备局域网联网条件下,也可使用局域网与服务器62进行数据交互。
图6所示的示意图是以独立服务器为例进行的介绍,如前所述实际应用中,还可以以服务器集群替代图6中的服务器62对上述方法进行实现。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。