具有密钥的资源定位符转让专利

申请号 : CN202010034368.5

文献号 : CN111277573A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 格里戈里·布兰奇克·罗特埃里克·贾森·布朗德万

申请人 : 亚马逊技术有限公司

摘要 :

请求被预生成以包括待在实现所述请求中使用的密钥。所述请求可以被编码到统一资源定位符中并且可以包括认证信息,以使将所述请求提交给的服务提供商能够确定所述请求是否被授权。可以将所述请求传递给各个实体,所述各个实体随后可以将所述请求提交给所述服务提供商。所述服务提供商在接收到请求之后可以验证所述认证信息,并且使用编码到所述请求中的密钥来实现所述请求。

权利要求 :

1.一种用于提供对数据的访问的方法,包括:

创建签名的URL,以提供对资源的限时读取或写入访问,其中创建所述签名的URL包括:构造要签名的URL的一部分,其中所述要签名的URL的所述部分包括:指示要执行的操作的信息、用于指示所述签名的URL何时期满而不再能够用于提交以访问所述资源的期满信息、以及到所述资源的路径,其中所述操作包括存储或检索数据;

使用私用密钥对所述URL的所述部分进行签名,以生成所述URL的所述部分的签名;

构造所述URL,以引用所述资源,其中所述URL包括所述期满信息和所述签名;以及将所述签名的URL与客户提供的加密密钥一起提供给用户,其中未在签名的所述数据中指定所述客户提供的加密密钥。

2.根据权利要求1所述的方法,其中所述资源是所述数据,并且所述数据由服务提供商存储。

3.根据权利要求1所述的方法,其中所述私用密钥对应于服务提供商能够使用以验证所述签名的公共密钥。

4.根据权利要求1所述的方法,其中所述资源是所述数据,所述数据由服务提供商存储,并且所述服务提供商缺少对所述私用密钥的访问。

5.根据权利要求1所述的方法,其中所述签名的URL指定要与所述客户提供的加密密钥一起使用的加密方案。

6.根据权利要求1所述的方法,其中所述路径对应于使用所述uRL能够访问的多个资源。

7.根据权利要求1所述的方法,其中所述方法由存储所述资源的服务提供商的客户执行,并且所述用户对于所述客户而言是第三方。

8.一种方法,包括:

从用户接收对信息的请求,所述请求包括统一资源定位符,所述统一资源定位符包括第一密钥、使用所述第一密钥签名的部分和未签名的部分;以及至少部分地基于所述第一密钥和由第三方在不影响所述签名的部分的有效性的情况下修改的所述未签名的部分中的信息,向所述用户提供对所述信息的访问。

9.根据权利要求8所述的方法,其中

所述方法还包括:使用第二密钥来确定所述签名的部分有效。

10.根据权利要求9所述的方法,还包括:作为确定所述签名的部分有效的结果,提供对所述信息的访问。

11.根据权利要求9所述的方法,其中:

所述请求由授权实体提供给所述用户;以及

所述第二密钥与所述授权实体相关联。

12.根据权利要求8所述的方法,还包括:通过至少使用所述第一密钥执行密码操作来获取所述信息。

13.根据权利要求12所述的方法,其中所述密码操作包括:使用所述第一密钥来对所述信息的加密版本进行解密。

14.一种系统,包括:

一个或多个处理器;以及

存储器,存储指令,所述指令能够由所述一个或多个处理器执行以使所述系统执行以下各项:获得包括签名的URL和客户提供的加密密钥在内的请求,其中所述签名的URL被创建为提供对资源的限时读取或写入访问,并且其中所述签名的URL包括:要签名的URL的一部分,其中所述要签名的URL的所述部分包括:指示要执行的操作的信息、用于指示所述签名的URL何时期满而不再能够用于提交以访问所述资源的期满信息、以及到所述资源的路径,其中,所述操作包括存储或检索数据;

数字签名,所述数字签名是通过使用私用密钥对所述URL的所述部分进行签名以生成所述URL的所述部分的签名而生成的;以及对所述资源的引用,其中所述URL包括所述期满信息和所述签名;

使用与所述私用密钥相对应的公共密钥来验证所述签名;以及在所述签名已被证实的条件下,使用所述客户提供的加密密钥来执行所述操作以实现所述请求。

15.根据权利要求14所述的系统,其中:

所述一个或多个处理器能够执行用于使用所述客户提供的加密密钥来执行所述操作以实现所述请求的所述指令,以使所述系统使用所述客户提供的加密密钥来对所述数据进行加密;以及所述要执行的操作包括存储所述数据。

16.根据权利要求14所述的系统,其中:

所述一个或多个处理器能够执行用于使用所述客户提供的加密密钥来执行所述操作以实现所述请求的所述指令,以使所述系统使用所述客户提供的加密密钥来对所述数据进行解密;以及所述要执行的操作包括检索所述数据。

17.根据权利要求14所述的系统,其中所述系统缺少对所述私用密钥的访问。

18.根据权利要求14所述的系统,其中:

所述签名的URL指定要与所述客户提供的加密密钥一起使用的加密方案;以及所述一个或多个处理器能够执行用于使用所述客户提供的加密密钥来执行所述操作以实现所述请求的所述指令,以使所述系统使用所述客户提供的加密密钥利用所指定的加密方案来对所述数据进行加密或解密。

19.根据权利要求14所述的系统,其中所述请求是用于存储所述数据的请求。

20.根据权利要求14所述的系统,其中所述请求是用于检索所述数据的请求。

21.根据权利要求14所述的系统,其中:

所述签名的URL指定要与所述客户提供的加密密钥一起使用的加密方案;

所述系统缺少对所述私用密钥的访问;

所述一个或多个处理器能够执行用于使用所述客户提供的加密密钥来执行所述操作以实现所述请求的所述指令,以使所述系统使用所述客户提供的加密密钥利用所指定的加密方案来对所述数据进行加密或解密;以及所述请求用于存储或检索所述数据。

22.一种系统,包括:

一个或多个处理器;以及

存储器,包括指令,其中作为由所述一个或多个处理器执行所述指令的结果,所述指令使所述系统执行以下各项:从用户接收对信息的请求,所述请求包括统一资源定位符,所述统一资源定位符包括第一密钥和未签名的部分,所述第一密钥与所述统一资源定位符的签名的部分相关联;以及至少部分地基于所述第一密钥和由第三方修改的所述未签名的部分中的信息,向所述用户提供对所请求的信息的访问,其中所述第三方进行的所述修改不影响所述签名的部分的有效性。

23.根据权利要求22所述的系统,其中:

所述请求包括统一资源定位符的密码签名和所述第一密钥;以及所述指令还包括在由所述一个或多个处理器执行的情况下使用第二密钥来确定所述密码签名有效的指令。

24.根据权利要求23所述的系统,其中所述指令还包括在由所述一个或多个处理器执行的情况下使所述系统执行以下操作的指令:作为确定所述密码签名有效的结果,提供对所述信息的访问。

25.根据权利要求23所述的系统,其中:

所述请求由授权实体提供给所述用户;以及

所述第二密钥与所述授权实体相关联。

26.根据权利要求22所述的系统,其中所述指令还包括在由所述一个或多个处理器执行的情况下使所述系统执行以下操作的指令:通过至少使用所述第一密钥执行密码操作来获取所述信息。

27.根据权利要求26所述的系统,其中所述密码操作包括使用所述第一密钥来对所述信息的加密版本进行解密。

28.根据权利要求25所述的系统,其中:

所述第二密钥是与所述授权实体相关联的公共-私用密钥对中的公共密钥;以及所述系统无法访问所述公共-私用密钥对中的私用密钥。

29.根据权利要求22所述的系统,其中所述第一密钥是对称密钥。

30.根据权利要求22所述的系统,其中所述请求是超文本传输协议HTTP请求。

说明书 :

具有密钥的资源定位符

[0001] 本申请是申请日为2014年9月23日的PCT国际申请PCT/US2014/057043在2016年3月24日向中国专利局递交并进入中国国家阶段后对应的题为“具有密钥的资源定位符”的发明专利申请No.201480052715.X的分案申请。
[0002] 相关申请的交叉引用
[0003] 本申请出于各种目的,以引用方式将2013年9月25日提交的、标题为“RESOURCE LOCATORS WITH KEYS”的美国专利申请号14,037,282和2013年9月25日提交的、标题为“DATA SECURITY USING REQUEST-SUPPLIED KEYS”的美国专利申请号14/037,292的全部公开内容包含在此。
[0004] 背景
[0005] 在许多语境中,计算资源和相关数据的安全性非常重要。作为一个示例,组织通常利用计算装置的网络来向它们的用户提供一组稳健的服务。网络通常跨多个地理边界并通常与其他网络连接。例如,组织可使用内部网络的计算资源和由其他方管理的计算资源两者来支持它的操作。例如,组织的计算机可在使用另一个组织的服务的同时与其他组织的计算机通信以访问和/或提供数据。在许多情况下,组织使用由其他组织管理的硬件来配置并操作远程网络,从而降低基础设施成本并实现其他优点。在具有此类计算资源配置的情况下,确保对它们所持有的资源和数据的访问安全可能具有挑战性,尤其是随着此类配置的大小和复杂性的增长。
[0006] 附图简述
[0007] 将参照附图描述根据本公开的各个实施方案,在附图中:
[0008] 图1示出可实现各个实施方案的环境的说明性示例;
[0009] 图2示出可实现各个实施方案的环境的说明性示例;
[0010] 图3示出根据至少一个实施方案的统一资源定位符(URL)的说明性示例;
[0011] 图4示出根据至少一个实施方案的URL的另一个示例;
[0012] 图5示出根据至少一个实施方案的用于提供对数据的访问的过程的说明性示例;
[0013] 图6示出根据至少一个实施方案的网页的说明性示例;
[0014] 图7示出根据至少一个实施方案的用于获得对数据的访问的过程的说明性示例;
[0015] 图8示出根据至少一个实施方案的用于处理请求的过程的说明性示例;
[0016] 图9示出根据至少一个实施方案的用于请求和提供对数据的访问的过程的说明性示例;并且
[0017] 图10示出可实现各个实施方案的环境。
[0018] 详述
[0019] 在以下描述中,将描述各个实施方案。出于解释的目的,将阐述具体的配置和细节,以便提供实施方案的透彻理解。但是,对本领域的技术人员将是明显的是,没有具体细节的情况下也可以实行实施方案。此外,为了不使所描述的实施方案变得模糊,可能会省略或简化众所周知的特征。
[0020] 本文所描述和建议的技术包括使用统一资源定位符(URL)和对计算资源(通常为“资源定位符”)的其他引用以能够访问服务提供商的服务。尽管出于说明目的在整个本公开中使用URL,但是应理解,本文所描述的技术通常可适用于其他资源定位符(即,可由系统使用以将计算资源定位在所述系统内的信息的情况)。此外,本文所描述的技术通常可适用于电子请求。
[0021] 在一个实施方案中,服务提供商(例如,计算资源服务提供商)的客户利用服务提供商的一个或多个服务。作为一个示例,客户可利用服务提供商的数据存储服务来实现各种优点,诸如归因于分布式数据处理设施而降低的资本费用、更简单的数据管理、更高的可用性、更低的延迟等。为了使其他人(例如,客户的客户或通常为由客户授权的用户)能够访问由提供商管理的客户的资源,客户可利用预签的URL。为了生成预签的URL,客户可生成URL(或通常为请求)和URL的一部分的电子(数字)签名。用来生成电子签名的URL的一部分可包括密钥以在处理所述请求中加以使用。所述密钥可以多种形式提供。例如,所述密钥可以是明文对称密钥、公共-私用密钥对的明文公共密钥、或以服务提供商能够解密或已经解密以使用所述密钥来执行一个或多个密码操作以实现所述请求的方式加密的对称密钥。
[0022] 通常,URL可被配置来编码请求、密钥和授权信息,所述授权信息可包括可用来验证所述请求的认证信息(例如,电子签名)。可将URL从客户提供给另一个实体,其不一定是第三方,尽管在本公开中称为第三方,可以是由客户授权以致使服务提供商实现请求的任意实体。可以各种方式将URL提供给第三方。例如,在一些实施方案中,可将URL提供在网页或内容通过网络传输给第三方的其他组织中。URL的提供可经受一个或多个条件,诸如从第三方接收到有效登录凭证、从第三方接收到支付或承诺支付和/或其他条件。
[0023] 第三方可将请求提交给服务提供商以致使服务提供商实现所述请求。在提交所述请求之前,第三方可向所述请求添加另外的信息,诸如待被操作的数据和/或向服务提供商指示所述请求如何被处理的一个或多个参数的一个或多个值。例如,所述参数可从所述服务提供商被配置有使用能力的多个加密方案/模式中指定加密方案和/或加密方案的模式的选择以供使用。
[0024] 在接收到所述请求之后,所述服务提供商可检验电子签名的有效性以确定是否实现所述请求。可关于确定是否实现所述请求来执行其他操作,诸如确定所述请求的实现是否符合任意可适用的策略和/或在所述请求中编码(例如,作为授权信息的一部分编码)的一个或多个参数(例如,期满)。对于服务提供商认为可实现的请求来说,服务提供商可从所述请求提取密钥,解密所提取的密钥(如果可适用的话),和执行包括于实现所述请求中的一个或多个操作。可提供对客户的响应,诸如所述请求可被实现的确认和/或一个或多个操作的性能的结果(例如,使用在所述请求中提供的密钥解密的数据)。
[0025] 图1示出可实现各个实施方案的环境100的说明性示例。如图1所示,环境100包括客户102并且是服务提供商104。服务提供商104的客户102可利用服务提供商的各种服务以便利用由服务提供商104提供的各种计算资源。例如,客户102可操作其自己的服务并且利用服务提供商104的计算资源,以便避免依靠其自身实现计算资源的费用和/或复杂性。作为一个示例,客户102可将对媒体文件诸如视频文件和/或音频文件的访问作为服务提供给其他客户。但是,为了避免维持足够稳健的数据存储系统所带来的费用和麻烦,客户102可利用可向许多客户诸如客户102提供对数据存储系统的访问的服务提供商104的数据存储系统。
[0026] 如以上所指出,客户102可具有其自身客户中的一个或多个,并且因此本公开的各种技术涉及在不必用作由服务提供商104存储的数据的代理的情况下,允许客户102向其利用服务提供商104的服务的客户提供服务。图1中示出了这样做的一种方式包括客户102将URL 106提供给可以是客户102的客户或通常为客户102的服务的用户的第三方108。如下文更加详细地所指出,可以各种方式将URL 106从客户102提供给第三方108。
[0027] 如在下文更加详细地所述,将URL 106提供给第三方108的一种方式可以是通过使用网页或编码URL的其他接口以便可由第三方108的人类操作员选择。作为说明性示例,具有客户102的账户的人类操作员可登陆到客户102的网站中,并且由于已经登陆进去而可访问URL 106。也可以其他方式将URL 106从客户102提供给第三方108。例如,可将URL 106编码到电子邮件消息或从客户102到第三方108的其他消息中。作为另一个示例,可将URL 106编码到以任意合适方式从客户102提供到第三方108的文档中。通常,无论提供访问是否包括通过网络将URL 106传输给第三方108,第三方108访问URL 106所采用的任意方法被认为在本公开的范围内。
[0028] 应注意,图1示出在客户102与可以是实体(诸如组织和/或个人)的第三方108之间的信息流。尽管数据被示出为在实体之间的流,但是应理解,除非上下文中另外清楚地指出,数据借助于相应实体的合适的计算装置加以传送,下丈结合图10描述其示例。作为一个示例,可从客户102从客户102的web或其他服务器提供URL 106。类似地,第三方108的人类操作员可借助于合适的装置(诸如个人计算机、移动装置、平板计算装置、电子书阅读器或通常被配置来通过网络或其他数据接收接口接收信息的任意装置)接收URL 106。
[0029] 应注意,尽管图1示出URL 106直接从客户102提供给第三方108,但是URL 106可根据各种实施方案以各种方式加以提供。如以上所指出,例如,客户102的服务器可将URL 106诸如编码到提供给客户108的网页中提供给第三方108。但是,此类服务器可使用计算资源,例如,虚拟计算机系统和/或由服务提供商104托管的一个或多个存储装置来实现。换句话说,尽管客户102可能控制向第三方108提供URL 106,但是由URL 106提供给第三方108的资源可能不直接由客户102托管。此外,URL 106可经过图1中未示出的一个或多个中介机构。其他变化形式也被视为是在本公开的范围内。
[0030] 如所指出的,在接收到URL 106之后,第三方108可使用URL 106来访问服务提供商104的服务。作为将在整个本公开中所使用的一个示例,第三方108可使用URL 106来访问由服务提供商104以客户102的名义存储的数据。换句话说,服务提供商104的客户102可使用URL 106来允许第三方108获得对一个或多个计算资源(诸如由服务提供商104公布的媒体文件)的访问。应注意,尽管对数据的访问(例如,数据检索)在整个本公开中用作说明性示例,但是本文所描述的技术可用来以许多方式提供对服务的访问。例如,URL 106可用来允许第三方108使用服务提供商104的资源来存储数据。例如,在当客户102提供给第三方存储数据的能力作为其提供的服务的一部分时的情况下,此类使用可能是有用的。通常,URL 
106可被用来根据可由服务提供商104实现的请求以任意方式提供访问。
[0031] 返回示出的实施方案,为了得到对由服务提供商104托管的资源的访问,第三方108可将URL提供给服务提供商104。各种信息可被包括在URL中以使服务提供商104能够确定如何和/或是否实现由第三方108使用URL 106提交给服务提供商104的请求。例如,如图1所示,URL 106包括电子签名110,所述电子签名110可由服务提供商104借助于对对应于客户102的签名验证密钥112进行访问加以验证。签名验证密钥112可以是例如客户102也可访问的对称密钥。在此类实施方案中,服务提供商104可使用一个或多个对称密码签名验证算法来验证电子签名110,以便确定第三方108由客户102授权以使用URL 106提交请求。作为另一个示例,签名验证密钥112可以是公共-私用密钥对的公共密钥,其中客户102访问公共-私用密钥对的私用密钥。客户102可使用私用密钥生成电子签名110,在从第三方108接收到签名110之后,所述电子签名110随后可由服务提供商104加以验证。通常,可使用包括于URL 106中的允许服务提供商104确定来自客户108的使用URL 106提交的请求由客户102授权的任意类型的信息。
[0032] 如图1所示,URL 106还可包括密钥114。密钥114可以是客户102访问的密钥。包括于URL 106中的密钥的类型可根据各种实施方案而改变。在一些实施方案中,例如,密钥114是待被用于由服务提供商104加密或解密的对称密钥。作为另一个示例,密钥114可以是公共-私用密钥对的公共密钥,所述公共-私用密钥对的私用密钥由客户102保持但对由服务提供商104的访问来说是缺少的。作为密钥114可包括于URL中的又一个示例,可能存在包括于URL 106中的对称密钥,形式为在另一个密钥下被加密(其中其他密钥可根据各种实施方案而改变),但通常为一个密钥,以使得在从第三方108接收到URL 106之后,服务提供商104能够依靠其自身通过使用另一个服务(例如,另一个第三方服务)来解密密钥114以供使用。通常可使用可将在URL 106中的密钥114提供给第三方108以使第三方108能够将URL 106提供给服务提供商104以便使服务提供商104能够使用密钥114来进行一个或多个操作所采用的任意方式。以此方式,第三方108能够使用由客户102提供的密钥114来利用服务提供商
104的服务。
[0033] 作为其中这是有用的一种方式的说明性示例,客户102可利用服务提供商104的数据存储服务来存储数据,其中所述数据使用对服务提供商104不可访问的密钥以加密的形式加以存储。通过将密钥114包括在URL 106中给第三方108,第三方108可使用URL 106将请求提交给服务提供商104,以便使服务提供商104能够使用密钥114来解密由客户102存储在数据存储服务中的数据。因此,直到服务提供商104被提供URL 106,服务提供商104并不具有访问客户102的呈明文形式的数据的能力。应注意,第三方108可以各种方式使用URL 106将所述请求提交给服务提供商104。例如,第三方108的应用可提供URL作为在图形用户接口上的可选择用户接口元件的一部分。在选择可选择的元件之后,应用(诸如第三方的浏览器)可联系域名服务(DNS)以便确定应将请求提交至的互联网协议(IP)地址。随后可将请求提交给所述请求可包括URL 106的IP地址。在URL 106中的信息随后可使服务提供商104能够相应地处理所述请求。
[0034] 图2示出根据各种实施方案的服务提供商200的环境的说明性示例。如图2所示,服务提供商200包括客户接口202。客户接口可以是服务提供商200的子系统,所述服务提供商200的子系统允许提交来自客户的请求以被诸如上文结合图1所述的服务提供商200处理。
客户接口可因此包括用于为客户提供将请求提交给服务提供商200的能力的适当的计算装置。例如,该客户接口可包括被配置来通过互联网或另一种网络接收请求的一个或多个web服务器。尽管未这样示出,但是其他基础设施还可被包括于客户接口202中,诸如使客户接口202能够适合于服务提供商200的客户操作的适当的网络设备。
[0035] 当请求通过客户接口202被接收时,所述请求可与适当的认证信息一起被接收。例如,如图2所示,请求可与包括URL的一部分的签名206的URL 204一起被接收。所述签名可根据各种实施方案而生成。例如,生成URL 204的客户可使用在客户与服务提供商200之间共享的保密信息生成签名206。作为另一个示例,客户可能已经使用非对称的数字签名方案来使用私用/公共密钥对的私用密钥签署URL 204。通常,可使用用来认证URL 204的任意类型的信息,并且在一些实施方案中,请求可在没有此类信息的情况下被提交。
[0036] 但是,如图2所示,当请求通过客户接口202被接收时,将所述请求的URL 204与签名206一起(例如,通过服务提供商200的内部网络)提供给服务提供商200的认证系统208。可替代地,足以生成电子签名206的URL的一部分可代替整个URL被提供。认证系统208可以是服务提供商200的被配置来诸如通过验证设置有包括有请求的URL的电子签名来认证请求的子系统。在验证URL 204的签名206之后,认证系统208可向客户接口202提供指示所述签名206是否有效的响应。客户接口202的装置(例如,web服务器)可使用由认证系统208提供的信息以确定如何处理URL 204。例如,如果认证系统208指示签名206无效,那么客户接口202就可拒绝所述请求。类似地,如果来自认证系统208的所述信息指示URL 204的签名
206有效,那么客户接口202就致使所述请求得到处理。
[0037] 尽管在图中未示出,但是认证系统208或在服务提供商200内或以服务提供商200的名义操作的另一个系统可操作以结合确定如何处理请求来执行其他操作。例如,认证系统208或与其协同操作的另一个系统可用来检验可以确定是否可实现所述请求的一个或多个策略。可至少部分地基于各种因素(诸如提交所述请求的请求者的身份、时刻、用于在其中数据被存储或待被存储的位置的逻辑标识符以及其他上下文信息)做出策略确定。可通过客户接口202或通过适当地已配置的应用编程接口(API)调用的另一个接口来管理策略。
[0038] 返回图2中示出的实施方案,如果认证系统208确定签名206有效,那么客户接口202就可确定处理所述请求。处理所述请求可涉及在客户接口202与请求处理基础设施212之间传送加密数据210。请求处理基础设施212可包括共同地操作来提供服务提供商200的服务的一个或多个装置。例如,如图2所示,所述请求处理基础设施可包括用来以服务提供商200的客户的名义存储数据的多个数据存储系统214。还可包括包括网络基础设施(但未示出)的其他基础设施。根据可通过客户接口202提交的各种类型的请求,数据例如通过网络在客户接口202与请求处理基础设施212之间的通路可根据各种实施方案以各种方式发生。例如,如果URL 204包括于存储数据的请求中,那么客户接口可利用在URL 204中提供的密钥216来加密数据,并且将所加密的数据210传输给请求处理基础设施212以用于存储在数据存储系统214中的一个或多个中。
[0039] 类似地,如果所述请求是检索数据的请求,那么客户接口202可将通信传输给允许将来自数据存储系统214中的一个或多个的数据提供给客户接口202的请求处理基础设施212。客户接口202随后可使用在URL 204中提供的密钥216来解密所加密的数据210,并且将所解密的数据提供给提交所述请求的客户。应注意,图2中示出的服务提供商200的环境出于说明目的而简化,并且还可包括记录由客户使用服务提供商200的许多其他装置和子系统(诸如记账系统)。此外,服务提供商200可包括出于冗余和/或可用性目的而位于不同地理位置中的设施。
[0040] 图3示出根据各个实施方案的URL 300的说明性示例。在一个实施方案中,如以上所指出,URL 300可包括URL 300的一部分的电子签名302和密钥304。URL 300还可包括其他信息,诸如路径306。所述路径306可包括使诸如上文所述的服务提供商能够定位与经由URL 300提交的请求相关联的一个或多个资源的信息。在URL 300中的其他信息可包括指示一个或多个操作308通过实现所述请求而被执行的信息。可被指定的示例操作包括但不限于存储数据、检索数据、生成数据的数字签名及其他。在一些实施方案中,URL可指定多个操作和应该执行所述操作的顺序。
[0041] 如图所示,URL 300包括期满310。所述期满可编码时间的值,在所述时间处URL 300不再用来将可实现的请求提交给服务提供商。换句话说,所述期满指示使用URL提交的另外的可实现请求由于到达所述时间而变得不可实现的时间。作为一个示例,参照图1,希望对某些数据提供临时访问的客户102可利用在URL 106中的期满310,以便限制URL 106可用于第三方108的时间量。期满310可包括于用来生成电子签名302的URL 300的数据中,以便确保签名302仅在期满310自从由客户发布以来尚未被修改时有效。以此方式,在期满之后的时间处对URL的访问并不提供仅通过修改所述期满来访问数据的能力。当确定是否实现请求时,接收URL 300的服务提供商可利用所述期满和/或其他信息来确定是否实现请求。例如,如果URL在期满310之前设置有请求,那么所述服务提供商就可实现所述请求(假设已经实现针对实现所述请求的全部其他要求(如果有的话))。类似地,如果在所述期满
310之后将URL 300结合所述请求一起提供给服务提供商,那么所述服务提供商就可拒绝(尽管针对实现所述请求的任意其他要求被满足)。应注意,尽管期满在整个本公开中用作潜在地确定提供商是否将实现请求的参数,但是用于实现请求的标准可能更加复杂。例如,用于实现请求的标准可被配置成使得尽管已经过了期满时间,请求仍可实现。其他上下文信息(例如,请求者的身份)例如可取代所述期满。
[0042] 如图所示,URL 300还可包括其他参数312。所述其他参数可以是使服务提供商能够确定是否和/或如何实现请求的参数。例如,如以上所指出,URL 300可包括期满310。包括于其他参数312中的另一参数可以是指示URL 300变得可用于将请求提交给服务提供商的时间的开始时间。开始时间和期满时间的组合可提供时间窗口,在时间窗口期间可实现使用URL提交的请求。开始时间例如在对数据的访问被阻止直到某一时间(例如,释放媒体文件)的情况下是有用的。因此,服务提供商的客户可预生成将提供对数据的访问或以其他方式将用来在稍后时间处将可实现的请求提交给服务提供商的一个或多个URL。预生成在将来时刻将能够访问数据的URL的此类能力提供技术优势,诸如,预准备内容分发网络(CDN)和/或预配置内容具有URL,而无需提供对某些数据的访问直到期望给予此类访问的能力。
[0043] 参考图1,在图3中示出的URL的其他参数可包括由第三方添加的包括但不限于以下的其他信息:其上使用密钥304(或当指代图1时的114)来执行一个或多个密码操作的数据;如何执行实现请求的参数。
[0044] 图4示出URL 400的说明性示例,所述URL 400可以是上文所论述的URL 300或通常为本文所述的任意URL。如图所示,URL 400包括签署部分402和未签署部分404。所述签署部分可包括修改可致使URL 400变得无效的信息。作为上文所论述的示例,签署部分402可包括期满406。此外,签署部分可包括密钥408。通常,所述签署部分可包括提供URL 400的客户意图防止伪造此类信息的任意信息。所述信息例如可包括授权以提交URL 400的身份,关于URL 400何时可用的计时信息(例如,一个或多个开始时间和/或一个或多个期满时间),以及确定使用URL 400提交的请求应是否和/或如何被处理的其他上下文信息。URL 400的未签署部分可包括各种信息,诸如电子签名410,诸如上文所述的另外的请求数据412,所述另外的请求数据412可以是由第三方添加的使用密钥408执行一个或多个密码操作的数据;和/或通常为第三方能够在不引起电子签名410无效的情况下改变的信息。
[0045] URL 400以特定的方式被示出以说明本公开的各个方面。众多变化形式被视为是在本公开的范围内。例如,如图4所示,URL 400在URL 400的签署部分之内示出密钥。除在URL 400的签署部分之内的密钥之外或作为URL 400的签署部分之内的密钥的替代方案,URL的未签署部分可包括密钥。例如,在一些实施方案中,服务提供商的客户可向第三方提供具有签署部分的URL。所述第三方可向URL添加密钥,并且使用具有另外的密钥的URL来将请求提交给服务提供商,其中实现所述请求由客户经由至少部分地基于URL的签署部分生成的签名来授权。以此方式,第三方可利用服务提供商的一个或多个服务,而无需向任一服务提供商提供对密钥的访问(除了当执行一个或多个密码操作作为实现请求的一部分的时候)。因此,在任一客户或服务提供商处的违反安全或其他事件并不提供对密钥的访问,并且因此不能对呈明文形式的数据进行访问。此外,密码操作可使用在(由客户供应的)URL的签署部分中的密钥和(由第三方供应的)URL的未签署部分中的密钥两者执行。以此方式,在第三方与客户两者之间的协作要求访问呈明文形式的数据。其他变化形式,包括使用服务提供商的密钥的变化形式,作为另外一种选择或除此之外,也被视为是在本公开的范围内。
[0046] 图5示出根据各个实施方案的用于提供对数据的访问的过程500的说明性示例。过程500可由任意合适的系统,诸如由诸如上文结合图1描述的客户操作的系统执行。在一个实施方案中,过程500包括生成502 URL待被签署的一部分。URL的所述部分可包括执行过程500的实体期望防止伪造的信息。在各种实施方案中,包括于URL待被签署的部分中的信息量可发生变化。例如,URL待被签署的部分可包括到客户的资源的路径、密钥、限定URL何时和/或如何用来使请求由服务提供商实现的一个或多个上下文参数、和/或其他信息。
[0047] 一旦URL待被签署的部分已经生成502,过程500可包括使用504签署密钥来签署URL的所生成的部分。所签署的密钥可以是在用来生成电子签名时呈现可由将URL所提交给的服务提供商验证的电子签名的任意密钥。例如,在一些实施方案中,所签署的密钥可以是在执行过程500的实体与服务提供商之间共享的保密信息。在其他实施方案中,所签署的密钥可以是公共-私用密钥对的私用密钥,其中服务提供商可利用公共-私用密钥对的公共密钥(和可能的授权证书)来验证所述电子签名。应注意,尽管图5示出URL的被签署的部分包含密钥,但是一些实施方案可具有包括在URL的被签署的部分之外的签署密钥。例如,可使用此类内含密钥,其中伪造密钥并不是问题。例如,如果URL可用来访问来自数据存储装置的数据,那么修改的密钥通常可将用来解密数据,并且因此可能不需要防止修改所述密钥。
[0048] 一旦签署的密钥已经用来生成URL的所生成部分的电子签名,过程500可包括使URL的构造完整506以包括电子签名。如所论述的,其他信息(诸如URL的另外的参数)可用来使URL的构造完整506。一旦使完整506,过程500就可包括将完整的URL提供508给第三方。第三方例如可以是执行诸如上文所述的过程500的实体的客户。将完整的URL提供508给第三方可根据各个实施方案以各种方式来执行。例如,如下文更加详细地论述,可将URL在网页中提供给第三方,其中可在提供网页之前需要针对访问网页的一个或多个要求。作为说明性示例,第三方可需要执行登录/签到步骤以便访问具有完整的URL的网页。通常,URL可以任意方式(诸如以电子消息的方式)或以可将数据从一个系统传递至另一个系统的方式加以提供。此外,应注意,尽管出于说明目的使用第三方,但是将URL所提供给的实体对提供商或客户来说未必是第三方。例如,在过程500由组织的系统执行的实施方案中,本文所述的技术可用来向组织的雇员提供对数据的访问。因此,代替第三方,可将URL提供给组织内的执行过程500的用户。其他变化形式也被视为是在本公开的范围内。
[0049] 图6是根据各个实施方案的可用来提供URL的网页600的说明性示例。如图6所示,网页600包括各种内容。在网页600中示出的内容本质上是说明性的,并且类型和外观以及内容的量可根据各种实施方案而变化。网页600可根据各种实施方案以各种方式来提供。例如,可通过网络将网页提供给应用,诸如客户端(诸如上文结合图1所述的第三方)的浏览器应用。但是,网页600可通常通过能够接收和处理网页的任意合适的装置加以提供。尽管出于说明目的使用网页600,但是URL或根据本文所述的各种实施方案被配置的其他资源定位符可根据各种实施方案在内容中以各种方式加以提供。例如,可将内容提供给移动应用或不必分类为浏览器应用的其他应用。通常,可提供URL或其他资源定位符所采用的任意方式被认为在本公开的范围内。
[0050] 如图6所示,网页600包括能够导航网页600是其一部分的整个网站的各种图形用户接口元件。在该示例中,网页600是电子商务网站的一部分,所述电子商务网站的一部分诸如通过向一个或多个客户提供流式视频内容来提供对视频内容的访问。例如,在网页600的左边,提供了各种视频流派的各种链接602。在该示例中,所述链接表现为文本单词,所述文本单词使所述链接能够使用适当的输入装置(诸如,键盘、鼠标、触摸屏或其他输入装置)得以选择。链接的选择可致使应用(其致使网页600被显示)依照与所述链接相关联的URL,通过对网页600进行编程来将http请求提交给提供网页600的服务器或另一个服务器。在该示例中,网页600还包括被配置为播放按钮604的图形用户元件。播放按钮604可以是网页600的图形用户接口元件,其中网页600的底层代码被配置成使得通过按钮604的输入装置的选择致使请求被提交给适当的服务器。
[0051] 在该示例中,网页600的代码包括URL 606,所述URL 606可根据本文所述的各种技术被配置。在该说明性示例中,URL 606包括到资源(其在该情况下是视频文件)的路径608。URL 606还可包括密钥610、期满612和电子签名614。电子签名可至少部分地基于路径608、密钥610和期满612和/或其他信息生成。通常,URL 606可包括在图中并未示出的另外的信息。因此,当用户选择按钮604时,使用URL 606将适当地已配置的请求(在该示例中是http请求)提交给服务器。尽管在图中未示出,但是此类请求可通过使用在URL 606中的路径608来从域名服务(DNS)获得服务器的IP地址和通过互联网或其他网络将具有URL 606的请求提交给IP地址加以提交。
[0052] 一种处理网页600的装置可接收响应,如果URL 606在提交请求的时刻有效,那么所述响应可包括路径608所指向的资源。如在本文中别处所指出,如果URL 606例如因为在过了期满612而被提交或URL 606被修改而无效,那么就可拒绝此类请求。
[0053] 图7示出根据各个实施方案的用于访问数据的过程700的说明性示例。如所指出的,尽管执行过程700的系统对涉及有具有过程700的性能的其他实体来说未必是第三方,但是过程700可由任意合适的系统,诸如上文结合图1描述的第三方的系统执行。在一个实施方案中,过程700包括从提供商的客户获得702URL。URL可根据各种实施方案以各种方式诸如通过上文所述的网页或以另一种方式获得702。一旦获得702,可使用704所获得的URL来将请求提交给提供商。在一些实施方案中,将URL提供给提供商作为诸如根据HTTP以提供商可接受的方式格式化的请求。但是,在一些实施方案中,使用704所获得的URL来将请求提交给提供商可包括在提交请求之前修改URL。例如,在一些实施方案中,URL可用来提交请求以使用由URL供应的密钥来对由执行过程700的系统添加给URL的数据执行一个或多个操作。作为另一个示例,执行过程700的系统可出于各种目的(诸如,出于指示提供商如何处理所述请求和/或如何供应除在所获得的URL中的有效签名之外的可能由提供商所需的用以实现所述请求的信息)向URL添加一个或多个参数。也可包括对执行过程700的系统和/或提供商有用的其他信息。
[0054] 向所获得的URL的添加可包括向URL的在用来生成被包括具有所获得的URL的电子签名的部分之外的部分添加信息。以此方式,可在不使电子签名无效的情况下向URL添加信息。一旦所获得的URL已经被使用704来将请求提交给提供商,假设所述请求适当地被提交和可以其他方式实现,过程700就可从提供商获得706处理所述请求的结果。例如,根据由所述请求指定的一个或多个操作,可将所述结果包括于来自提供商的响应中。作为一个示例,如果所述请求加密或解密设置有或以其他方式由所述请求指定的数据,那么获得706的所述结果可视情况包括加密或解密数据。通常,根据使用在所述请求中提供的密钥执行的密码操作,获得706的所述结果可发生变化。
[0055] 图8示出用于提供对数据的访问的过程800的说明性示例。过程800可由合适的系统执行,诸如如上文所述的服务提供商的web服务器。在一个实施方案中,过程800包括接收802具有URL的请求。URL可包括密钥和电子签名和/或上文所述的其他信息。电子签名可从URL提取804,并且用来确定806所述请求是否有效。确定806所述请求是否有效可根据各种实施方案以各种方式诸如通过使用对称签名验证算法或非对称签名验证算法来验证所述电子签名来执行,所述各种方式可包括与授权证书通信来使用公共-私用密钥对的公共密钥以确定电子签名的有效性。
[0056] 如果确定806签名无效,那么过程800可包括拒绝808所述请求。所述请求可根据各种实施方案以各种方式拒绝808,诸如通过传输指示所述请求被拒绝和/或针对其拒绝的一个或多个原因的通信。还可使用可拒绝请求的其他方式,诸如仅通过在无需响应于所述请求来传输通信的情况下不实现所述请求。通常,可使用可拒绝请求的任意方式。但是,如果确定806签名有效,那么过程800可包括从被接收802的URL提取810密钥。可使用812所提取的密钥来处理(即,实现)所述请求。处理所述请求可包括使用密钥来执行对包括有或以其他方式由所述请求指定的数据的一个或多个密码操作。可提供814对所述请求的响应。提供814所述响应可包括使用密钥(例如,加密数据、解密数据和/或电子签名)和/或执行此类操作的确认来提供一个或多个密码操作的性能的结果。
[0057] 尽管过程800出于说明目的以特定的方式进行描述,但是变化形式被认为在本公开的范围内。例如,图8示出在签名有效的条件下处理的请求。但是,可执行一个或多个其他操作来确定是否处理所述请求。作为一个示例,确定所述请求是否有效可包括检验所述请求是否符合策略。因此,可检验由服务提供商的客户配置的策略以便确定所述请求的实现是否与策略相符。此外,如以上所指出,URL可包含关于应是否和/或如何执行所述请求的各种上下文条件。因此,确定806所述请求在执行过程800期间是否有效可包括根据包括于URL中的此类信息来检验此类条件是否是可被实现和/或处理所述请求。通常,所述请求的实现可需要一个或多个条件被满足,并且实现请求的方式可至少部分地取决于在所述请求中指定的参数。
[0058] 此外,在一些实施方案中,在使用密钥之后,所述过程可包括执行一个或多个操作,所述一个或多个操作致使由系统和通常为执行过程800的实体对密钥的访问丢失。致使丢失对密钥的访问的操作例如可包括重写存储密钥的一个或多个存储器位置,和/或采取允许此类存储器位置被重写诸如以便处理后续请求的一个或多个动作。通常,可立即或最终执行致使对所述密钥的访问丢失的任意操作。以此方式,供应在URL中的密钥的客户可确保服务提供商具有对密钥的访问持续对应于需要密钥来实现请求的时间的限制的持续时间。其他变化形式也被视为是在本公开的范围内。
[0059] 图9示出根据实施方案的用于提供对数据的访问的过程的说明性示例。如图9所示,所述过程可由合适的系统,并且在该特定的示例中,可能由如虚线指示的多个系统执行,所述虚线将过程900的操作彼此分开。在一个实施方案中,过程900包括客户将加密机密包装902成可由提供商解开(获得)。包装加密机密可例如通过使用合适的密钥加密所述加密机密来执行,以使得所述密钥可由提供商解开(解密)。例如,所述加密机密可使用在提供商的客户与提供商之间共享的保密信息来包装。作为另一个示例,加密机密可使用公共-私用密钥对的公共密钥包装,其中提供商能够使用来自公共-私用密钥对的私用密钥来解开加密机密。应注意,尽管图9示出为由提供商解开的已包装的加密机密,但是通常本公开的变化形式包括提供商不解开加密本身但能够使另一个系统(例如,第三方系统)以其名义解开所述加密机密的那些。
[0060] 返回图9的说明性示例,客户可构造904具有已包装的机密的URL。URL可诸如上文所述来加以构造904。随后,客户可通过使用适当的签署密钥而生成所构造的URL的电子签名来签署906 URL。随后,可使URL完整908以包括电子签名。随后,可将完整的URL提供910给诸如上文所述的第三方。在已经提供910完整的URL之后,第三方可使用912完整的URL来将请求提交给提供商。作为一个示例,可将URL编码到网页或可由第三方的用户选择的其他内容中,以致使第三方的应用使用完整的URL将请求提交给提供商。
[0061] 一旦已经将所述请求提交给提供商,所述提供商就可使所述请求规范化和生效914。应注意,可执行规范化来反向进行在从一个实体传输至另一个实体期间使请求突变的各种方式。可执行规范化,例如,以便确保正确地执行对电子签名的验证。例如,可将插入到所述请求中或从所述请求移除的另外的字符视情况移除和/或添加,以便确保如果所述请求有效,那么电子签名也将有效。在验证所述请求之后,提供商可通过执行(或以其他方式致使执行)用以解密加密机密的适当的密码算法来解开910加密机密。随后,可使用912加密机密来处理所述请求,并且所述提供商可响应914于第三方请求,诸如从而提供所述提供商执行和/或确认其性能的所述一个或多个密码操作的性能的结果。如以上所指出,所述提供商随后可使对诸如上文所述的加密机密的访问丢失916。
[0062] 本公开的实施方案可鉴于以下条款来描述:
[0063] 1.一种计算机实现的方法,其包括:
[0064] 在被配置有可执行指令的一个或多个计算机系统的控制下,
[0065] 在接收到所述请求之前,使用所述一个或多个计算机系统缺失的密钥从请求者接收执行一个或多个操作的请求,所述请求包括统一资源定位符,所述统一资源定位符:
[0066] 指示所述一个或多个操作;
[0067] 包括由第一实体至少部分地基于所述统一资源定位符的一部分和对所述请求者来说不可访问的保密信息而生成的电子签名;并且包括所述密钥;
[0068] 做出所述电子签名是否有效的确定;
[0069] 在所述确定指示所述电子签名有效的条件下,使用来自所述请求的所述密钥来执行对数据的所述指示的一个或多个操作,以生成所述一个或多个操作的结果;
[0070] 根据所述请求来提供所述一个或多个操作的所述结果;以及
[0071] 在使用来自所述请求的所述密钥来执行对所述数据的所述指示的一个或多个操作之后,执行一个或多个操作来使对所述密钥的访问丢失。
[0072] 2.如条款1所述的计算机实现的方法,其中:
[0073] 所述统一资源定位符还编码识别所述数据的路径;以及
[0074] 使用所述密钥来执行所述指示的一个或多个操作包括使用所编码的路径来访问所述数据。
[0075] 3.如条款1至2所述的计算机实现的方法,其中所述数据中的至少一些由所述请求者供应到所述请求中。
[0076] 4.如前述条款中任一项所述的计算机实现的方法,其中:
[0077] 所述统一资源定位符的部分指示期满;并且
[0078] 在所述期满之前接收所述请求的另外的条件下,执行使用所述密钥来执行所述指示的一个或多个操作。
[0079] 5.如前述条款1中任一项所述的计算机实现的方法,其中:
[0080] 接收所述请求由服务提供商执行;
[0081] 所述第一实体是所述服务提供商的客户;以及
[0082] 所述请求者不是所述服务提供商的客户。
[0083] 6.如前述条款中任一项所述的计算机实现的方法,其中还在所述请求符合由所述第一实体配置的一个或多个策略的条件下,执行使用所述密钥来执行所述指示的一个或多个操作。
[0084] 7.如前述条款中任一项所述的计算机实现的方法,其中:
[0085] 所述请求包括向由所述第一实体生成的初始统一资源定位符添加用以生成所述请求的信息;并且
[0086] 所述使用所述密钥来执行所述指示的一个或多个操作至少部分地基于向所述初始统一资源定位符添加的所述信息。
[0087] 8.如前述条款中任一项所述的计算机实现的方法,其中:
[0088] 所述统一资源定位符包括呈加密形式的所述密钥;并且
[0089] 所述方法还包括在使用所述密钥来执行所述指示的一个或多个操作之前解密呈加密形式的所述密钥。
[0090] 9.一种系统,其包括:
[0091] 一个或多个处理器;以及
[0092] 包括指令的存储器,当由所述一个或多个处理器执行时,所述指令致使所述系统:
[0093] 从请求者接收请求,所述请求包括预生成部分,所述预生成部分包括由第一实体生成的授权信息和密钥;
[0094] 在所述授权信息被确定来指示由所述第一实体授权以实现所述请求的条件下,使用所述密钥来执行一个或多个操作;并且
[0095] 提供所执行的一个或多个操作的结果。
[0096] 10.如条款9所述的系统,其中所述预生成部分被格式化为统一资源定位符。
[0097] 11.如条款9至10所述的系统,其中:
[0098] 所述一个或多个操作包括访问由所述第一实体存储的呈加密形式的数据,并且使用所述密钥来解密所述数据;并且
[0099] 提供所述结果包括将所解密的数据传输给所述请求者。
[0100] 12.如条款9至11所述的系统,其中:
[0101] 所述请求还包括向所述预生成部分添加的数据;并且
[0102] 使用所述密钥来执行所述一个或多个操作包括执行对向所述预生成部分添加的所述数据的一个或多个密码操作。
[0103] 13.如条款9至12所述的系统,其中所述授权信息包括使用对所述请求者不可访问的保密信息生成的电子签名。
[0104] 14.如条款9至13所述的系统,其中:
[0105] 所述授权信息指定关于提交所述请求的上下文的一个或多个条件;并且[0106] 使用所述密钥来执行一个或多个操作还在与所述一个或多个条件相符的情况下接收所述请求的条件下执行。
[0107] 15.如条款9至14所述的系统,其中所述一个或多个条件限定在可实现所述请求期间的持续时间。
[0108] 16.如条款9至15所述的系统,其中:
[0109] 所述授权信息包括至少部分地基于所述密钥而生成的电子签名;并且
[0110] 指示由所述第一实体的授权的所述授权信息要求所述电子签名有效。
[0111] 17.如条款9至16所述的系统,其中:
[0112] 所述系统还包括所述请求者和不同于所述请求者的客户系统;并且
[0113] 所述客户系统提供用于提交所述请求使用的所述请求的表示,从而使所述请求能够从所述请求者接收。
[0114] 18.一种非暂时性计算机可读存储介质,其具有存储在其上的指令,当由计算机系统的一个或多个处理器执行时,所述指令致使所述计算机系统:
[0115] 生成编码请求和密钥的信息;
[0116] 生成可由能够实现所述请求的服务提供商验证的信息的电子签名;并且[0117] 使所述信息和所述电子签名可用,以使所述信息和所述电子签名能够提供给所述服务提供商以便致使所述服务提供商使用所述密钥来实现所述请求。
[0118] 19.如条款18所述的非暂时性计算机可读存储介质,其中使所述信息和所述电子签名可用包括生成包括所述信息和所述电子签名的统一资源定位符。
[0119] 20.如条款18至19所述的非暂时性计算机可读存储介质,其中使所述信息和所述电子签名可用包括提供被配置具有可选择的元件的网页,所述可选择的元件在被选择时,致使将包括所述信息和所述电子签名的所述请求传输到所述服务提供商。
[0120] 21.如条款19至20所述的非暂时性计算机可读存储介质,其中提供所述网页包括将所述网页提供给不同于所述服务提供商的第三方。
[0121] 22.如条款18至21所述的非暂时性计算机可读存储介质,其中:
[0122] 所述信息还编码由所述服务提供商托管的资源的标识符;并且
[0123] 所述请求指定结合所述资源执行的一个或多个操作。
[0124] 23.如条款18至22所述的非暂时性计算机可读存储介质,其中所述信息编码呈明文形式的所述密钥。
[0125] 24.如条款18至23所述的非暂时性计算机可读存储介质,其中所述信息编码关于提交所述请求的一个或多个条件用于所述请求可由所述服务提供商实现。
[0126] 其他变化形式被视为是在本公开的范围内。例如,将在URL或通常向提供者的请求中的密钥中提供的的类型和方式可根据各种实施方案而变化。可与本公开的技术组合的一些技术在2013年9月25日提交的、标题为“RESOURCE LOCATORS WITH KEYS”的美国专利申请号14,037,282和在2013年9月25日提交的、标题为“DATA SECURITY USING REQUEST-SUPPLIED KEYS”的美国专利申请号14/037,292中进行描述,所述申请的全部内容出于全部目的在此以引用的方式并入本文。
[0127] 图10示出用于实现根据各个实施方案的各方面的示例环境1000的各方面。如将了解,尽管出于解释目的使用基于web的环境,但是可视情况使用不同环境来实现各个实施方案。环境包括电子客户端装置1002,电子客户端装置1002可包括可操作来在适当网络1004上发送和接收请求、消息或信息并且将信息传送回装置用户的任意适当装置。此类客户端装置的示例包括个人计算机、手机、手持式消息传送装置,膝上型计算机、平板计算机、机顶盒,个人数据助理、嵌入计算机系统、电子书阅读器等。网络可包括任意适当网络,包括内部网、互联网、蜂窝网、局域网或任意其他此类网络或上述网络的组合。此类系统所用的组件可以至少部分地取决于所选网络和/或环境的类型。用于通过此类网络通信的协议和组件是众所周知的,因而本文将不再详细论述。网络上的通信可通过有线或无线连接及其组合来实现。在这个示例中,网络包括互联网,因为环境包括用于接收请求并且响应于所述请求而提供内容的web服务器1006,但是对于其他网络来说,可使用服务类似目的替代装置,如本领域普通技术人员所显而易见的。
[0128] 说明性环境包括至少一个应用服务器1008和数据存储1010。应当理解,可以存在可以链接起来或以其它方式来配置的若干应用服务器、层或其它元件、过程或组件,这些应用服务器、层或其它元件、过程或组件可交互来执行如从适当的数据存储获得数据的任务。如本文所使用的服务器可以各种方式实现,诸如硬件装置或虚拟计算机系统。在一些上下文中,服务器可以指代在计算机系统上执行的编程序模块。如本文所使用的,术语“数据存储”指代能够存储、访问和检索数据的任意装置或装置组合,所述装置或装置组合可包括任意标准、分布式或集群式环境中的任意组合和任意数目的数据服务器、数据库、数据存储装置和数据存储介质。应用服务器可包括任意适当硬件和软件,所述硬件和软件视执行客户端装置的一个或多个应用的各方面的需要而与数据存储集成,从而处理应用的一些(甚至大多数)数据访问和业务逻辑。应用服务器可提供与数据存储协作的访问控制服务,并且能够生成将要传送到用户的内容、诸如文本、图形、音频和/或视频,在这个示例中,所述内容可以超文本标记语言(“HTML”)、可扩展标记语言(“XML”)或另一种适当结构化语言的形式由web服务器向用户提供。全部请求和响应的处理以及客户端装置1002与应用服务器1008之间的内容递送可由web服务器来处理。应当理解,web服务器和应用服务器不是必要的,且仅仅是示例组件,因为本文所论述的结构化代码可在如本文其他地方所论述的任意适当装置或主机上执行。此外,除非上下文中另外清楚地指出,否则本文描述为由单个装置执行的操作可以由可形成分布式系统的多个装置共同地执行。
[0129] 数据存储1010可包括若干单独的数据表、数据库或其他数据存储机构和介质,用来存储与本公开的特定方面相关的数据。例如,所示出的数据存储可包括用于存储生成数据1012和用户信息1016的机构,生成数据1012和用户信息1016可用于提供用于生成端的内容。数据存储还被示出为包括用于存储日志数据1014的机构,所述日志数据1014可用于报告、分析或其他此类目的。应当理解,可能存在可能需要存储在数据存储中的许多其它方面,如页面图像信息和访问权信息,所述方面可视情况存储在上文列出的机构中的任意机构中或存储在数据存储1010中的额外机构中。数据存储1010可通过与它关联的逻辑来操作,以便从应用服务器1008接收指令,并且响应于所述指令而获得、更新或以其他方式处理数据。在一个示例中,用户可以通过由用户操作的装置针对某种类型的项目提交搜索请求。在此状况下,数据存储可能访问用户信息来验证用户的身份,并且可访问目录详细信息以获得有关所述类型的项目的信息。随后,可将信息诸如以网页上的结果列表的形式返回给用户,用户能够经由用户装置1002上的浏览器来查看所述网页。可在浏览器的专用页面或窗口中查看到感兴趣的特定项目的信息。但是,应该指出,本公开的实施方案不一定限于网页的上下文,但一般而言,可以是通常更适用于处理请求,其中所述请求不一定是针对内容的请求。
[0130] 每个服务器通常将包括提供用于所述服务器的一般管理和操作的可执行程序指令的操作系统,并且通常将包括存储指令的计算机可读存储介质(例如,硬盘、随机存取存储器、只读存储器等),当由服务器的处理器执行时,所述指令允许服务器执行其期望的功能。操作系统的适合实现方式和服务器的一般功能是已知的或可商购的,并且易于由本领域普通技术人员实现,尤其是根据本文中的公开来实现。
[0131] 在一个实施方案中,环境是利用通过通信链路、使用一个或多个计算机网络或直接连接来互连的若干计算机系统和组件的分布式计算环境。但是,本领域普通技术人员应理解,这种系统可在具有比图10所示的组件更少或更多组件的系统中同样顺利地操作。因此,图10中的系统1000的描绘本质上应视为说明性的,并且不限制本公开的范围。
[0132] 各个实施方案还可在广泛范围的操作环境中实现,在一些情况下,所述环境可包括一个或多个用户计算机、计算装置或可用于操作多个应用中的任一个的处理装置。用户或客户端装置可包括多个通用个人计算机中的任意一个,诸如运行标准操作系统的台式计算机、膝上型计算机或平板计算机,以及运行移动软件并且能够支持多个网络连接协议和消息传送协议的蜂窝装置、无线装置和手持式装置。这种系统还可包括多个工作站,所述工作站运行各种可商购的操作系统和用于如开发和数据库管理等目的的其他已知应用中的任一个。这些装置还可包括其他电子装置,如虚拟终端、瘦客户端、游戏系统和能够通过网络通信的其他装置。
[0133] 本公开的各种实施方案利用本领域那些技术人员可能熟悉的至少一种网络来使用各种各样可商购的协议中的任一种支持通信,所述协议诸如传输控制协议/互联网协议(“TCP/IP”)、在开放系统互连(“OSI”)模型的各个层级中操作的协议、文件传送协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、公共互联网文件系统(“CIFS”)以及AppleTalk。网络例如可以是局域网、广域网、虚拟专用网、互联网、内部网、外联网、公共交换电话网、红外网络、无线网络以及上述网络的任意组合。
[0134] 在利用web服务器的实施方案中,web服务器可以运行各种各样服务器或中间层应用中的任一种,包括超文本传输协议(“HTTP”)服务器、FTP服务器、公共网关接口(“CGI”)服务器、数据服务器、Java服务器和业务应用服务器。服务器还能够响应于来自用户装置的请求而执行程序或脚本,诸如通过执行可以实施为以任意编程语言(诸如 C、C#或C++)或任意脚本语言(诸如Perl、Python或TCL)以及其组合写成的一个或多个脚本或程序的一个或多个web应用。所述服务器还可以包括数据库服务器,包括但不限于可从知 商购的那些。
[0135] 环境可包括如上文所论述的各种各样的数据存储以及其他存储器和存储介质。这些可驻留在各种各样的位置,如在一个或多个计算机本地(和/或驻留在一个或多个计算机中)的存储介质上,或远离网络上的计算机中的任意或全部计算机。在实施方案的特定集中,信息可驻留在本领域那些技术人员熟悉的存储区域网(“SAN”)中。类似地,用于执行属于计算机、服务器或其他网络装置的功能的任意必要的文件可视情况本地或远程存储。在系统包括计算机化装置的情况下,每个这种装置可包括可经由总线电耦合的硬件元件,所述元件包括例如至少一个中央处理单元(“CPU”或“处理器”)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘)和至少一个输出装置(例如,显示装置、打印机或扬声器)。此类系统还可包括一个或多个存储装置,诸如硬盘驱动器、光存储装置和诸如随机存取存储器(“RAM”)或只读存储器(“ROM”)的固态存储装置、以及可移动媒体装置、存储卡、闪存卡等。
[0136] 此类装置还可包括计算机可读存储介质读取器、通信装置(例如,调制解调器、网卡(无线或有线)、红外线通信装置等)和工作存储器,如上文所论述。计算机可读存储介质读取器可与计算机可读存储介质连接或被配置来接收计算机可读存储介质,计算机可读存储介质表示远程、本地、固定和/或可移动存储装置以及用于临时和/或更永久地包含、存储、传输和检索计算机可读信息的存储介质。系统和各种装置通常还将包括位于至少一个工作存储器装置内的多个软件应用、模块、服务或其他元件,包括操作系统和应用程序,诸如客户端应用或web浏览器。应当了解,替代实施方案可具有与上述实施方案不同的众多变化形式。例如,也可使用定制硬件,和/或特定元件可以硬件、软件(包括可移植软件,如小程序)或两者实现。此外,可以采用与如网络输)入/输出装置的其他计算装置的连接。
[0137] 用于包含代码或部分代码的存储介质和计算机可读介质可包括本领域已知或已使用的任意适当介质,包括存储介质和通信介质,诸如但不限于以用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任意方法或技术所实现的易失性和非易失性、可移动和不可移动的介质,包括RAM、ROM、电可擦除可编程只读存储器(“EEPROM”)、闪存或其他存储器技术、只读光盘驱动器(“CD-ROM”)、数字通用光盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所需信息且可由系统装置访问的任意其他介质。基于本文所提供的公开内容和教义,本领域普通技术人员将了解实现各个实施方案的其他方式和/或方法。
[0138] 因此,应在说明性意义而不是限制性意义上理解本说明书和附图。但是,将显而易见的是:在不脱离如在权利要求书中阐述的本发明的更宽广精神和范围的情况下,可以对其做出各种修改和改变。
[0139] 其他变化形式也在本公开的精神内。因此,尽管所公开的技术可容许各种修改和替代构造,但在附图中已示出并且在上文中详细描述所示的其某些实施方案。但是,应当了解,并不旨在将本发明限制于所公开的一种或多种具体形式,相反地,旨在涵盖落在如所附权利要求书限定的本发明的精神和范围内的全部修改、替代构造和等效物。
[0140] 在描述所公开实施方案的上下文中(尤其是在以下权利要求书的上下文中),术语“一个(a,an)”和“所述”以及类似指称对象的使用应解释为涵盖单数和复数两者,除非在本文另外地指示或明显地与上下文矛盾。术语“包括(comprising)”、“具有”、“包括(including)”和“包含”应解释为开放式术语(即,意味着“包括但不限于”),除非另外地注解。当术语“连接的”非经修改并且指代物理连接时,应解释为部分地或全部地包含在内、附接至或结合在一起,即使存在介入物。除非本文另外指明,否则本文中值范围的列举仅仅意图用作个别地表示落入所述范围的各单独值的速记方法,并且犹如本文个别描述地那样将各单独值并入到本说明书中。除非本文另外指明或与上下文矛盾,否则术语“集”(例如,“项目集”)或“子集”的使用解释为包括一个或多个成员的非空集合。此外,除非本文另外指明或与上下文矛盾,否则术语对应集的“子集”不一定指对应集的真子集,而是子集和对应集可以相等。
[0141] 连接性语言,诸如“A、B、和C中的至少一个”或“A、B和C中的至少一个”形式的短语,除非另外特别指明或以其他方式明显地与上下文矛盾,否则如一般情况下使用的,根据上下文理解来表示项目、术语等可以是A或B或C、或A和B和C的集合的任意非空子集。例如,在具有以上连接性短语中所使用的三个成员的集的说明性示例中,“A、B、和C中的至少一个”和“A、B和C中的至少一个”指代以下集中的任意一个:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,此类连接性语言一般并非意在暗示某些实施方案需要存在A中的至少一个、B中的至少一个以及C中的至少一个。
[0142] 可按任意合适的顺序来执行本文所述的过程的操作,除非本文另外指明或以其他方式明显地与上下文矛盾。本文描述的过程(或变化形式和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下实行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。代码可以例如包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读储存介质上。计算机可读储存介质可以是非暂时性的。
[0143] 本文所提供的任意以及全部示例或示例性语言(例如,“诸如”)的使用仅意图更好地说明本发明的实施方案,并且除非另外要求,否则不会对本发明的范围施加限制。本说明书中的语言不应解释为将任意非要求的要素指示为实践本发明所必需。
[0144] 本文中描述了本公开的优选实施方案,包括发明人已知用于执行本发明的最佳模式。阅读上述说明书后那些优选实施方案的变化形式对于本领域的那些普通技术人员可以变得明显。发明人希望技术人员视情况采用此类变化形式,并且发明人意图以不同于如本文所特别描述的方式来实践本公开的实施方案。因此,经适用的法律许可,本公开的范围包括在此附加的权利要求中叙述的主题的全部修改和等效物。此外,除非本文另外指示或以其他形式明显地与上下文矛盾,否则本公开的范围涵盖其全部可能变化形式中的上述元素的任意组合。
[0145] 本文所引用的全部参考文献(包括出版物、专利申请和专利)据此以引用方式并入,其程度等同于每个参考文献单独地且具体地被表示为以引用方式并入本文并且以其全文在本文得以陈述。