多承租人服务网关的制作方法

文档序号:7889756阅读:241来源:国知局
专利名称:多承租人服务网关的制作方法
技术领域
本发明涉及网关,尤其涉及向多个承租人提供服务网关。
背景技术
计算系统正朝着被称为云计算的体系结构前进。在云计算中,位于远程的服务器响应于来自客户机或其他服务器的请求来提供资源。资源可包括数据存储、处理器使用、通信子系统、排队服务、或各种其他计算服务。一般而言,在云计算中,服务器的物理位置与请求者隔离开。 在跨网络通信时可使用众多协议。客户机设备可以与多个服务进行通信,并且可采用多个通信协议,每一个协议对应于客户机与其通信的服务。相反,服务可采用多个协议来适应用不同的协议来进行通信的客户机。在一些环境中,改变服务可涉及改变客户机采用的协议。

发明内容
提供本发明内容以便以简化形式介绍将在以下具体实施例中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。简而言之,在一个实施例中,公开了用于向多个服务提供用于多个承租人的网关的系统、方法和组件。网关担当各种服务的前端。在一个实施例中,机制包括从承租人接收诸如分配资源的请求等的资源管理请求。作为响应,系统可基于所指定的资源类型来确定对应的子系统,将该请求转发至所确定的子系统,从该子系统接收对该资源的标识,存储描述该资源的资源数据,包括该资源的标识,并且向承租人发送该资源的标识。在此处描述的机制的一方面,机制可包括从使用第一协议的承租人接收执行与一资源相关的操作的运行时请求,检索资源数据,将该资源数据附加到该请求,并且用第二协议将该请求转发至对应的子系统。在一些配置中,可包括多个协议首部,每一个协议首部都实现用于与承租人通信的对应协议,从传入请求中提取数据,附加资源数据,并以规范形式将该数据转发至子系统。协议处理程序可将子系统与承租人使用的协议隔离开。这可使得能够将子系统添加到未被配置成处理承租人的请求的系统。这还可使得能够通过添加新协议处理程序来在不重新配置子系统的情况下处理新协议。在一个实施例中,系统可包括基于资源数据或其他配置数据来选择性地处理传入请求的一个或多个流水线组件。一个配置包括在将传入请求转发至子系统之前对其进行授权的预授权组件。在一个实施例中,访问控制服务基于安全权标来选择性地提供访问权标。预授权组件可处理访问权标以确定授权。子系统可被配置成随后执行附加授权。在一个实施例中,系统可向承租人提供用于请求与资源相关的管理操作的管理URI以及用于请求与资源相关的运行时操作的运行时URI。在一个实现中,URI指定名字空间和分量标识符。URI可包括供对应的子系统专用的串。为了实现前述及相关目的,在这里结合以下描述及附图来描述系统的某些说明性方面。然而,这些方面仅指示了可采用本发明的原理的各种方法中的少数几种,且本发明旨在包括所有这样的方面及其等效方面。通过结合附图考虑本发明的以下详细描述,本发明的其它优点以及新颖的特征将变得显而易见。


参考以下附图来描述本发明的非限制性且非穷尽性实施例。在各附图中,除非另外指明,否则在全部附图中相同的附图标记指代相同的部分。为了帮助理解本发明,将参考以下与附图相关联地阅读的具体实施例,附图中图I是其中可部署此处描述的机制的示例环境的框图;
图2是其中可部署此处描述的机制的示例网关系统的框图;图3是示出根据此处描述的机制的用于提供对管理服务的访问的过程的示例实施例的流程图;图4是示出根据此处描述的机制的用于提供对运行时操作的访问的过程的示例实施例的流程图;图5是其中可部署此处描述的授权机制的用于提供对服务的访问的示例系统的框图;图6是示出根据此处描述的机制的用于授权对服务的访问的过程的示例实施例的流程图;以及图7是示出计算设备的一个实施例的框图,它示出可用于执行此处描述的功能的所选择的计算设备的组件。
具体实施例下文中将参考附图来更全面地描述本发明的各示例实施例,附图构成实施例的一部分且在其中作为示例示出了可在其中实践本发明的各特定示例实施例。然而,本发明可被实现为许多不同的形式并且不应被解释为被限于此处描述的各实施例;相反,提供这些实施例以使得本公开变得透彻和完整,并且将本发明的范围完全传达给本领域技术人员。特别地,本发明可被实现为方法或设备。因此,本发明可采用完全硬件实施例、完全软件实施例或者结合软件和硬件方面实施例的形式。因此,以下详细描述并非是局限性的。贯穿说明书和权利要求书,下列术语采用此处显式相关联的含义,除非该上下文在其他地方另有清楚指示。如此处所使用的,短语“在一个实施例中”尽管它可以但不一定指前一实施例。此外,如此处所使用的,短语“在另一个实施例中”尽管它可以但不一定指一不同的实施例。因此,可以容易地组合本发明的各实施例而不背离本发明的范围或精神。类似地,如此处所使用的,短语“在一个实现中”尽管它可以但不一定指相同的实现,并且可以组合各种实现的技术。另外,如此处所使用的,术语“或”是包括性“或”运算符,并且等价于术语“和/或”,除非上下文清楚地另外指明。术语“基于”并非穷尽性的并且允许基于未描述的其他因素,除非上下文清楚地另外指明。另外,在本说明书全文中,“一”、“一种”和“所述”的含义包括复数引用。“在......中”的含义包括“在......中”和“在......上”。如此处所使用的,术语“处理器”指的是诸如集成电路等可包括执行动作的集成逻辑的物理组件。如此处所使用的,术语“应用”指计算机程序或其一部分,并且可包括相关联的数据。应用可以是独立程序,或者应用可被设计成向另一应用提供一个或多个特征。“附加件”和“插件”是与“宿主”应用交互并向其提供特征的应用的示例。应用由应用组件的任何组合构成,应用组件可包括程序指令、数据、文本、对象代码、图像或其他媒体、安全证书、脚本、或者可被安装在计算设备上以使该设备能够执行所需功能的其他软件组件。应用组件能够以文件、库、页、二进制块或数据流的形式存在 。应用组件可被实现为物理电路和相关联的逻辑的组合。例如,ASIC可用于实现应用组件。如此处所使用的,术语“认证”指的是在可接受的确定程度上确认事实或声明为真。认证用户或用户身份适用于确认用户所声明的身份是充分且准确的。认证来自用户的请求可包括确认与请求包括在一起的身份信息是准确的,该请求是所标识的用户始发或授权的,该请求未被不适当地修改,或者请求中的其他信息是准确的。认证具有相关联的确定程度,从而允许其中已经认证的信息仍旧可能不准确的情形。此处所描述的组件可以从其上具有数据结构的各种计算机可读介质来执行。组件可通过本地或远程过程诸如按照具有一或多个数据分组(例如,来自一个通过信号与本地系统、分布式系统中的另一组件交互或跨诸如因特网的网络与其它系统交互的组件的数据)的信号来通信。例如,根据本发明的各实施方式,软件组件可被存储在非瞬态计算机可读存储介质上,包括但不限于专用集成电路(ASIC)、紧致盘(⑶)、数字多功能盘(DVD)、随机存取存储器(RAM)、只读存储器(ROM)、软盘、硬盘、电可擦除可编程只读存储器(EEPROM)、闪存或记忆棒。如此处所用的术语计算机可读介质既包括非瞬态存储介质又包括通信介质。通信介质一般用诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传递介质。作为示例而非限制,通信介质包括诸如有线网络和直接线连接等有线介质,以及诸如声学、无线电、红外线和其他无线介质等无线介质。图I是其中可实现各实施例的环境100的框图。图I提供了对示例环境的基本理解,但可采用许多配置并且许多细节未在图I中示出。如图I所示,示例环境100包括一个或多个客户机102、104或106。在图I中,每一个客户机都被示为计算设备。例如,客户机102是手持式计算设备,客户机104是膝上型或其他便携式计算设备,而客户机106可以是台式计算机、服务器、或其他相对固定的计算设备。在各种环境中,客户机可具有任一个或多个计算设备、计算机进程、模块或类似组件的形式。在示例环境中,承租人101、103和105分别采用客户机102、104和106来与系统通信。承租人可以是一个人、用户帐户、计算进程或执行计算操作的其他这样的实体。尽管每一个承租人都被示为对应于一个客户机设备,但承租人可同时或顺序地采用多个客户机设备。例如,承租人可以登录到任何客户机设备以执行计算操作。类似地,承租人进程可以在一个或多个客户机设备上执行。为了讨论方便,每一个承租人被讨论为具有唯一的一个客户机计算设备,但本发明不限于此。在一个配置中,承租人自己可以是向其他客户机提供服务的系统或云服务。如图I所示,在示例环境100中,客户机102、104或106中的每一个都与一个或多个子系统114、116或118通信。多个承租人可以与共同的子系统通信。由此,在客户机和子系统之间可以存在多对多关系。在所示示例配置中,客户机102与子系统114通信,客户机104与子系统116和118通信,而客户机106与子系统118通信。还可存在众多其他配置,并且配置可以在不同时间发生改变。子系统114-118中的每一个可以向做出请求的承租人提供一组对应的服务。服务可被称为资源。资源的示例包括数据存储和检索,计算处理器时间、排队、消息收发或连接。每一个承租人都可具有对它采用的一组服务的对应订阅。在各实施例中,订阅可 以按各种方式来记账。例如,信用卡模型可以为承租人使用的每一个服务或承租人使用的服务的量来向承租人收费。在另一示例中,一次付清订阅可以在周期性的基础上为最多使用指定限制或无限使用的服务向承租人收费。可使用各种其他记账机制或其组合来实现订阅。在一个实施例中,以与其他承租人的资源隔离开的方式向每一个承租人提供对应资源。例如,多个承租人可以各自具有只对拥有承租人可见的对应的数据存储资源。从承租人的观点来看,可以看上去就像只有该承租人正在使用系统,但系统知道多个承租人。资源可以虚拟地分开,但它们不必物理地分开。在一些实施例中,提供给承租人的资源可以物理地分布在多个处理器、存储设备或计算设备上,但作为虚拟地集成的资源呈现给承租人。在一段时间内,资源可以物理地移动,但位置对拥有承租人是透明的。如进一步示出的,客户机102、104或106中的每一个与子系统114、116或118之间的通信可经过网关112。由此,网关112用作客户机102、104或106中的每一个与子系统114-118之间的中介。简而言之,网关112可通过规范化客户机和子系统之间的通信来处理通信以提供处理多个计算机协议或格式的统一方式。网关112可提供各种预处理服务,诸如对承租人的认证或授权、日志记录、过滤、跟踪、变换或其他服务。网关112的机制在本文中更详细地讨论。如图所示,客户机102、104或106中的每一个可以通过网络110与子系统114-118中任一个进行通信。网络110可包括局域网、广域网、直接连接或其组合。在一个实施例中,网络110包括作为网络的网络的因特网。网络110可包括有线通信机制、无线通信机制或其组合。客户机102、104或106和网关112或子系统114-118或其他计算设备之间的通信可采用诸如IP、TCP/IP、UDP、HTTP、SSL、TLS, FTP、SMTP、WAP、蓝牙或WLAN等各种有线或无线通信协议中的一种或多种。在一个实施例中,客户机102、104和106、网关112和子系统114、116和118中的
每一个都由一个或多个计算设备来实现。计算设备可以是专用或通用计算设备。简而言之,可以采用的计算设备的一个实施例包括一个或多个处理单元、存储器、显示器、键盘和定点设备以及通信接口。该一个或多个处理单元可包括一个或多个多核处理器。示例计算设备包括大型计算机、服务器、刀片服务器、个人计算机、便携式计算机、通信设备、消费电子产品等。计算设备可包括通用或专用操作系统。华盛顿州雷蒙德市的微软公司的Windows 系列操作系统是可在计算设备上执行的操作系统的示例。图7示出了可用于实现网关112、子系统114-118或客户机102、104或106的计算设备的示例实施例。
图2是其中可部署此处描述的机制的示例系统200的框图。所示示例系统200可以在图I的环境100或其变体中使用。示例系统200包括管理网关202和运行时网关204,这两个网关可以是网关112的组件。示例系统200还包括子系统适配器224和子系统后端230,它们可以是子系统114、116或118的组件。如图所示,管理网关202包括协议首部206 ;运行时网关204包括协议首部208、210和212。尽管三个协议首部被示为对应于运行时网关204,而一个协议首部206对应于管理网关202,但网关可具有更多或更少的相关联的协议首部。网关可具有包括协议首部,具有插入网关的协议首部,或使用以另一种方式相关联的协议首部的体系结构。在一个实施例中,每一个协议首部都实现对应的成巾贞协议(framing protocol)。成帧协议是采用套接字来实现与客户机设备的连接的协议。成帧协议的示例包括超文本传输协议(HTTP)、. NET消息成帧协议(NMF)、会话发起协议(SIP)、可扩展消息收发和在场协议(XMPP)以及高级消息排队协议(AMQP)。在一些实现中,协议首部可监听与该协议相关联的一个或多个端口上的消息。各种配置可包括附加协议或排除这些协议中的一个或多个。 每一个协议首部都可处理传入消息以便向下游组件提供规范形式的消息和数据。类似地,协议首部可以从内部组件接受消息和数据并处理这些消息和数据以生成符合其对应协议的消息并且维护与承租人的通信会话。由此,在一个实施例中,协议首部可使得诸如流水线218、子系统适配器224或子系统后端230等组件能够接受消息和数据,而不必处理各种外部成帧协议。在一个实施例中,每一个协议首部都可响应于接收到传入消息而检索对应数据并将该对应数据附加到规范形式的消息。在一个实施例中,响应于接收到指定资源的请求,协议首部从策略存储214中检索对应的资源句柄和资源描述,将这些资源句柄和描述附加到接收到的消息,并以独立于外部协议的规范形式转发该消息。该过程在本文中更详细地描述。在一些实现中,协议首部可被配置成推迟对传入消息或其各部分的读取和规范化。例如,协议首部可以向下游组件提供解码器组件,该解码器组件具有读取消息和提取数据的逻辑。在一个实现中,解码器组件可以附加到消息本身。在一些实现中,解码器组件可由另一消息或另一机制提供。在这些实现中,消息可被认为是“懒惰地”构造的规范消息。尽管未示出,但协议首部206-212可具有分别处理推送协议或拉取协议的相关联的“推送”适配器或“拉取”适配器组件。推送适配器可具有使子系统能够提交推送任务、向外部实体发送消息、检索响应并将响应转发回子系统的队列。拉取适配器可基于一调度向外部实体请求消息,并经由运行时网关将消息转发至合适的子系统。在各种配置中,管理网关协议首部206可被配置成处理与运行时网关协议首部208-202中的一个相同的协议,或者它可以处理与运行时网关协议首部不同的协议。在一个实施例中,管理网关202可包括方便每一子系统管理资源的机制。管理可包括资源的创建或分配、资源的删除或解除分配、改变或重新配置资源,对资源的监视或其他管理任务。在一个实施例中,管理网关处理承租人请求并将其转发至与对应于所请求的资源的子系统相关联的管理适配器226。在一个实现中,配置表232可包括将每一种资源类型映射到对应子系统的数据。响应于接收到对资源的请求,管理网关202可查找对应子系统的标识,并将该请求转发至所指定的子系统的管理适配器226。管理适配器226可以对请求进行进一步处理并将其转发至子系统的一个或多个后端组件以便进行管理处理。在所示配置中,管理网关202和运行时网关204采用策略存储214,该策略存储用作设置和配置的数据库。更具体而言,在一个实现中,响应于接收到资源请求,管理网关202在策略存储214中存储对所请求的资源及其特性的描述。例如,该特性可包括队列或存储资源的最大大小、期满时间、资源行为或其他特性。行为的示例是在资源溢出或遇到错误条件的情况下采取什么动作的策略。所需资源特性的集合被称为资源的“应怎样(oughtness)”。在一个实施例中,管理网关202可以从管理适配器226或子系统后端接收对响应于请求而分配的实际资源的描述。该描述可不同于所请求的应怎样。例如,所分配的资源可具有比所请求的资源更小的大小。对实际资源的描述被称为资源的“是怎样(isness)”。管理网关202可将资源的是怎样存储在策略存储214中。在一个实现中,管理适配器226可返回对应于所分配的资源的句柄。该句柄可用于标识资源。在一个实现中,管理网关202 可接收资源句柄和资源的是怎样,并将其存储在策略存储214中。资源描述可包括对应于且标识资源的URI。URI可响应于请求被发送到请求者。URI可被投影到名字空间中,该名字空间由承租人指定并由运行时网关204用来在后续承租人请求中标识资源。在一个实现中,URI具有DNS名称的形式,其中前缀对应于所指定的名字空间,而后缀标识资源。在一个实施例中,运行时或管理网关的标识可由URI中的子串指定。例如,URI前缀“http://foo_tenant”可指定名字空间“foo”以及请求目的地-运行时网关。对应的URI前缀“http://f00-mgmt”可指定相同的名字空间“foo”以及请求目的地-管理网关。由此,运行时URI和管理URI可以指向如由符号名称标识的共同的名字空间,诸如“foo”的示例。在一个实施例中,管理URI和运行时URI并非如它们在这些示例中那样通过不同的前缀来区分。在一个实施例中,对应于网关的资源的标识形成树结构,其中所指定的名字空间中的每一个子系统或资源类型具有对应节点,并且与每一个子系统相关联的每一个资源具有作为子系统或资源类型节点的子孙的对应节点。这一 URI的示例是http: //foo-tenant.windows, net/resources/queues/a/b。在该 URI 中,“foo”标识名字空间,“queues”标识资源类型,而“a/b”标识名字空间中的特定队列资源。在一个实现中,每一个这样的URI都可具有标识相同的资源并将消息流定向到管理网关202的对应管理URI。例如,URIhttp://foo-tenant-mgmt. windows, net/resources/queues/a/b 对应于不例队列资源,并且可由承租人用来执行与资源相关的管理任务。管理网关202可将运行时URI和管理URI发送到承租人,从而使承租人能够用前者来管理资源并用后者来执行运行时操作。第二承租人可使用名字空间 “bar,,,以使得 URI http://bar-tenant. windows, net/resources/queues/a/b对应于第二承租人拥有的资源,并且不同于使用“foo”名字空间的第一承租人拥有的队列资源。在一个实施例中,运行时网关204用作针对每一个子系统的网关,并且与子系统适配器224的运行时适配器228进行通信。在一个实施例中,运行时网关204包括处理流水线中的一个或多个流水线组件,每一个组件在转发传入请求之前对其进行处理。例如,预授权流水线组件220可执行对请求的初步授权,并且基于授权结果来有条件地转发请求。预授权流水线组件220的附加细节在本文中提供。一个或多个过滤流水线组件222可执行基于配置的准则来有条件地转发传入请求的动作。各种配置可排除预授权组件220或过滤组件222,或包括一个或多个其他流水线组件。每一个流水线组件都可被选择性地用于基于系统配置、与请求相关联的资源数据或其他因素来处理消息。流水线组件担当承租人和子系统之间的中介。在一些实施例中,流水线组件可提取数据或更改消息首部,但不更改传入请求的净荷,尽管一些实施例可允许净荷更改。一个或多个流水线组件可被实现为网关的插件。在一个实施例中,运行时网关204可接收一请求,该请求包括对应于作为该请求的目标的资源的运行时URI。URI或其一部分可用于查找和定位对应于策略存储214中的资源的描述数据。描述数据可包括指定哪些流水线组件要处理请求,如何处理请求或流水线处理的其他参数的数据。例如,描述数据可具有指示要执行的预授权的类型、用于确定访问资源的授权的准则的设置,或其他设置。运行时网关204可基于接收到的URI来确定对应于请求的子系统。在一个实施例中,URI或资源描述数据指示资源类型。配置表232可包括资源类型到子系统的映射。在 执行适当的流水线动作后,运行时网关204可将请求转发至对应的子系统。具体而言,在一个实施例中,运行时网关204可将请求转发至适当子系统的运行时适配器228。在一个实施例中,运行时网关从策略存储214中检索对应于接收到的URI中指定的资源的资源句柄和对应的描述数据。运行时网关204可将资源句柄或描述数据附加到转发的消息,或以其他方式将资源句柄或描述数据传递至子系统。在一个实施例中,网关可将发送到子系统的消息打包。打包可包括将消息置于周围消息的正文中以便传输。在一个实现中,原始消息首部可以与消息净荷打包在一起。在一个实现中,原始消息首部可以从打包的消息中排除。消息可由运行时适配器228接收。响应于接收到运行时请求,运行时适配器228可发起对指定资源的动作或操作。动作或操作的发起可包括向相关联的子系统后端230中的一个或多个组件发送一个或多个命令。在一个实施例中,子系统适配器224和子系统后端230是诸如子系统114、116或118等子系统的组件,并且每一个子系统都可具有类似的体系结构。对于每一个子系统,子系统后端230可以与子系统适配器224位于同处,或位于远程。在一个实现中,子系统适配器224可以如子系统后端230的代理那样行动。子系统适配器可将传入请求打包并将包含该请求的消息发送到一个或多个子系统后端组件,接收响应,并随后响应请求者。子系统后端组件因此可以不知道承租人身份或位置、传入请求协议或其他这样的数据。图3是示出根据此处描述的一些机制的用于管理资源,尤其是分配资源的过程300的示例实施例的流程图。过程300或其一部分可由系统200或其变体的各种实施例执行。系统200的组件用作此处的实现的示例,但在各个实施例中,过程动作和组件的对应关系可以变化。所示出的过程300的各部分可以在框302开始,其中接收分配资源的请求。在一个配置中,该请求从诸如图I的承租人101、103或105等承租人接收。该请求可由管理网关202或接收并转发请求的另一组件接收。该请求可指定要创建的资源的类型,包括该资源的各种规约。规约可包括例如,大小限制、持续时间或资源的其他特性。该过程可行进到框304,其中在不由管理网关202接收的情况下,将请求转发至管理网关202。该过程可以行进至框306,其中确定资源是否已经存在。如果资源尚不存在,则管理网关202可将所需资源的应怎样存储在诸如策略存储214等数据库中。尽管未在图3中示出,但对于关于已经存在的资源的管理请求,如果该资源被发现不存在,则过程可以中止。该过程可行进至框308,其中管理网关202将分配消息发送到与资源类型相关联的子系统。如此处所讨论的,在一个实施例中,这些动作包括基于配置表来确定适当的子系统。该过程可行进至框310,其中接收分配消息的子系统分配所需类型的资源。在一些配置中,所分配的资源的实际特性可以不同于先前存储的应怎样。如果成功,则子系统可以回头向管理网关202报告资源的是怎样、资源句柄或其他标识信息。应当注意,分配资源可以按各种方式执行,这取决于资源类型、使用的实现或系统配置。在某些情况下,资源可能已经存在并且分配可包括预订其使用。在某些情况下,分配可包括创建资源或其一部分。在某些情况下,资源可以共享,并且分配可通过增加使用计数或以其他方式指定与资源的关联来执行。如此处所使用的,分配资源可由此包括各种动作。 该过程可行进至框312,其中管理网关202可将是怎样和资源句柄存储在策略数据库中。该过程可行进至框314,其中将响应发送到请求者。该响应可包括状态。如果状态是成功的,则响应可包括随后可用于管理资源的URI。在一个实施例中,响应包括随后可用于对资源执行运行时操作的运行时URI。该过程可行进至未示出的其他动作,退出或返回到调用程序。图4是示出根据此处描述的一些机制的用于提供对与资源相关的运行时操作的访问的过程400的示例实施例的流程图。过程400或其一部分可由系统200或其变体的各种实施例执行。系统200的组件用作此处的实现的示例,但在各个实施例中,过程动作和组件的对应关系可以变化或者过程400可以用系统200的变体执行。所示出的过程400的各部分可以在框402开始,其中接收执行运行时操作的请求。在一个配置中,该请求是从诸如图I的承租人101、103或105等承租人接收到的。该请求可由运行时网关204或接收并转发请求的另一组件接收。可以请求的操作的示例是存储或检索数据项、将项目添加到队列、发送消息、处理数据或其他操作。在一个实施例中,请求可具有一个或多个消息的形式,并且可由诸如协议首部208、210或212等协议首部接收。该过程可行进至框404,其中可以从请求消息中提取信息。该信息可包括目标地址、安全权标、资源规约、消息净荷或其他首部数据中的一个或多个。该过程可行进至框406,其中可基于所提取的消息信息来标识子系统和资源。在一个实施例中,这可包括基于可具有URI形式的目标地址的至少一部分来查找资源。如此处所讨论的,URI可包括指示子系统、资源类型或资源的串。URI或其一部分可用作在策略存储214中查找资源的键。在一个实施例中,对资源的查找可包括基于来自URI的串来确定最长前缀匹配。例如,URI可包括串“AA/BB/CC”。策略存储可包括对串“AA/BB”的匹配以及对“AA/BB/CC”的不匹配。由此可确定对应于“AA/BB”的资源是匹配资源。该技术为子系统提供了提供对应于资源的URI以包括供其专用的后缀的方式。例如,上述示例中的子串“CC”可表示由子系统在创建资源时传递回来的信息,其中该信息由子系统在后续请求中使用。网关可省略使用或甚至理解专用信息的任何配置,并且每一个子系统都可具有其自己系统以便使用专用后缀信息。该过程可行进至判定框408,其中基于对资源的查找来确定有条件的流程。在框408,如果未找到匹配的资源,则过程可行进至框410,其中拒绝请求。拒绝请求可包括将状态响应发送回做出请求的承租人,丢弃请求或另一动作。状态响应可基于承租人所采用的通信协议。例如,如果使用HTTP协议,则可返回404not found(未找到)错误。如果使用NMF协议,则可发送not-found(未找到)故障。该过程可退出或可返回到调用程序。在框408,如果找到匹配的资源,则过程可行进至框412,其中可检索请求数据。资源数据可具有以下形式文档、结构化数据或其他格式或其组合。在一个实施例中,资源数据包括资源句柄、指示是否要检查关于资源的请求以供运行时网关授权、用于授权判定的参数、要执行的流水线处理的规约、最大资源大小、配额、或者描述资源或与 资源相关联的其他数据。在一个实现中,资源数据可包括指示运行时子系统和对应于资源的子系统之间的合同的一组名值对。这一合同的示例指示可包括授权=TRUE;大小限制=64K;框412的动作可包括将所提取的数据和资源数据或其各部分附加到请求消息。这使得数据能够以规范形式对下游进程,且尤其是对接收子系统可用。如此处所使用的,将数据“附加”到消息可以按各种方式中的任一种来执行。一种技术是将数据预先挂到或追加到消息。其他技术可包括用规范化的首部来替换原始消息首部或将到数据的链接与消息相关联。一般而言,附加数据包括将数据与消息相关联以使得包括远程进程在内的接收加注释的消息的另一进程可以容易地检索到该消息。过程可行进至框414,其中可执行对请求消息的流水线处理。如此处所讨论的,处理请求消息的流水线组件可基于系统配置或资源数据的规约。图5和6及相关联的讨论示出了可执行的流水线处理的示例。尽管未在图4中示出,但流水线处理可导致请求被拒绝、丢弃或修改。该过程可行进至框416,其中可将消息发送到对应于资源的子系统。如此处所讨论的,发送消息可包括将消息打包在另一消息中,并将外面的消息发送到位于远程的子系统。在框416,可由目标子系统接收消息。在一些配置中,子系统或其一部分可位于远程。在一个实施例中,运行时适配器228可位于信息以便在定位子系统后端230时使用。该过程可行进至框418,其中子系统可处理请求。子系统可使用附加到消息的资源数据中的至少某一些来处理请求。框418的动作可包括向作出请求的承租人发送响应。响应可包括状态、所请求的数据或其他信息。尽管未在图4中示出,但在一个实施例中,发送自子系统的响应可由运行时网关204接收和转发。这可包括由协议首部进行处理。协议首部可创建外部消息以发送到作出请求的承租人,采用其中在框402接收到请求消息的协议。该过程可退出或可返回到调用程序。图5是执行对承租人的授权的网关系统500的框图。系统500包括网关系统200的组件中的至少某一些。编号相同的组件被认为是等价组件,并且此处对系统200的讨论适用于系统500的一些实施例。网关系统200的一些组件为了简明起见从网关系统500中省略,但在Iv实施例中,网关系统200和网关系统500可以是相同网关系统的不同视图。
在所示配置中,网关系统500包括运行时网关204、子系统适配器224、子系统后端230和策略存储214以及上述每一个组件的子组件。网关相同500还包括身份提供者502、承租人504和访问控制服务(ACS) 506。身份提供者502可以是向承租人504发放安全凭证的本地或远程网络实体。凭证可表示关于可被ACS506信任的承租人504的声明。在一个实施例中,安全凭证包括安全权标508。安全权标508可响应于标识到诸如名称和口令等信息而被发送到承租人504。在一个实施例中,承租人504向ACS506发送安全权标508。ACS506可验证安全权标508的真实性。如果验证成功,则ACS506可以向承租人504发放访问权标510。访问权标是运行时网关204信任的安全权标。尽管未在图5中示出,但身份提供者502可以是被统称为身份联盟的一组身份提供者中的一个。ACS506信任该联盟中的每一个身份提供者并且能够认证来自每一个提供者的安全权标。通过担当中介,ACS506从运行时网关204卸下以下任务维护与可随时间改变的联盟中的多个身份提供者或与可改变的协议的信任关系和认证数据。访问权标可包含承租人504做出或授予承租人504的断言或声明的集合。承租人504可使用访问权标来请求运行时网关204处的服务。在一个实施例中,预授权流水线组件220 (此处被称为“预授权” 220)可以对访问权标进行认证,并且确定声明是否足以授权承租人504对所指定的资源执行所请求的操作。这在图6中更详细地描述并且在文本中讨论。图6是示出根据此处描述的一些机制的用于授权承租人的过程600的示例实施例的流程图。过程600或其一部分可由系统500或其变体的各种实施例执行。系统500的组件用作此处的实现的示例,但在各个实施例中,过程动作和组件的对应关系可以变化。所示出的过程600的各部分可以在框602开始,其中诸如承租人504等承租人向诸如身份提供者502等身份提供者提供标识信息。该信息可以在消息中发送,如由箭头512所表示的。标识信息可包括以下各项中的一个或多个用户名、口令、数字签名、生物测定数据或标识或认证承租人504的身份的其他数据。标识信息被称为承租人504的上下文。过程可行进至框604,其中响应于接收到标识信息,身份提供者向承租人提供安全权标。身份提供者可执行各种认证过程并且基于认证来选择性地提供安全权标。在一个实现中,安全权标508在箭头514表示的消息中发送。过程可行进至框606,其中承租人向访问控制服务506发送安全权标508。该安全权标可以在由箭头516表示的请求消息中发送。过程可行进至框608,其中访问控制服务506基于接收到的安全权标来发放访问权标。尽管未在图6中示出,但访问控制服务506可以在安全权标不充分的情况下拒绝发送访问权标。例如,安全权标可能已经有访问控制服务不信任的身份提供者发放。如由箭头518表示的,访问控制服务506可以在消息中将访问权标510发送到承租人504。过程可行进至框610,其中承租人504可以在箭头520表示的消息中将请求和访问权标发送到运行时网关204,并且网关接收该请求和权标。在一个实施例中,请求和访问权标可以被传递至预授权流水线组件220。
过程可行进至框612,其中预授权组件220执行以下动作验证访问权标并确定访问权标的声明是否匹配请求的资源。对权标的验证可包括确定数字签名是否有效、权标是否已由可信访问控制服务发放,或其他验证动作。在一个实施例中,访问权标可包括一个或多个声明,诸如承租人的身份、承租人拥有或控制的订阅或承租人的其他权限。在一个实施例中,预授权组件220、运行时网关204、协议首部或另一组件可以从策略存储214中检索网关设置216。在一个实现中,每一个资源都具有存储在策略存储214中的被称为网关设置的对应数据集。网关设置可指示要执行的预授权的类型、被允许访问资源的承租人或组的列表、或为允许访问而进行匹配的一个或多个声明。例如,对应于资源的网关设置可指定一个或多个候选声明的集合,以使得在访问权标包含这些候选声明中的一个的情况下授权该访问权标。基于对应于资源、请求和访问权标的声明的网关设置,预授权组件220可确定声明是否匹配资源以及是否授权该请求。过程可行进至判定框614,其中基于判定来作出决定。如果访问权标是不真实的,或者声明未正确地匹配资源或请求,则过程可行进至框616,其中拒绝请求。拒绝请求可包括将状态响应发送回做出请求的承租人,丢弃请求或另一动作。该过程可退出或可返回到调用程序。在判定框614,如果确定访问权标是真实的且声明匹配资源或请求,则过程可授权该请求并行进至框618,其中从访问权标中提取声明的至少一个子集并将其附加到请求消息。该消息可被转发至适当的子系统。基于网关配置或网关设置,附加流水线组件可以在请求到子系统的路上对其进行处理。在一些配置中,协议首部208、210或212可提取声明并将其附加到消息。通过提取声明,使得接收子系统能够在未被配置成理解权标格式或协议的情况下处理声明。在一个实施例中,子系统可以对请求执行附加授权动作。通过具有与子系统分开的预授权阶段,图2和5的体系结构从子系统卸下一些授权。这可用于卸下一些处理,特别是在其中授权是昂贵的过程的配置中。这还可以在安全攻击或重度使用情形的情况下增强每一个子系统的弹性。过程600可执行未示出的附加动作,退出或返回到调用程序。系统500和过程600示出了对于运行时网关的授权和消息处理机制。在一些实施例中,可以对管理网关采用这些机制或其一部分。由此,管理请求处理可采用过程600或其变体。图7是示出计算设备700的一个实施例的框图,示出了可用于实现此处描述的包括系统200或500以及过程300、400或600在内的机制的计算设备的所选组件。计算设备700可包括比所示多得多的组件,或可包括比所示全部组件要少的组件。计算设备700可以是独立计算设备或诸如具有一个或多个刀片的机箱中的某一刀片之类的集成系统的一部分。尽管计算设备700的组件被示为分立组件,但这些组件中的任一个或多个可被组合或集成到诸如ASIC等集成电路中。如图所示,计算设备700包括一个或多个处理器702,处理器执行动作以执行各种计算机程序的指令。在一个配置中,每个处理器702可包括一个或多个中央处理单元、一个或多个处理器核、一个或多个ASIC、高速缓存存储器或其他硬件处理组件和相关程序逻辑。如所示,计算设备700包括操作系统704。操作系统704可以是通用或专用操作系统。华盛顿州雷蒙德市的微软公司的Windows .系列操作系统包括可在计算设备700上执行的操作系统的示例。、
在一个实施例中,计算设备700包括一个或多个图形处理单元(GPU) 716。GPU是被配置成执行诸如渲染图形图像等图形操作或执行流处理的处理器。存储器和存储706可包括各种类型的非瞬态计算机存储介质中的一个或多个,包括易失性或非易失性存储器、RAM、ROM、固态存储器、盘驱动器、光学存储、或可用于存储数字信息的任何其他介质。存储器和存储706可存储此处所述的一个或多个组件或其他组件。在一个实施例中,存储器和存储706存储管理网关202、运行时网关204、策略存储214、一个或多个子系统适配器224以及一个或多个子系统后端230。在各实施例中,这些组件中的一个或多个可以从存储器和存储706中省略。在一些实施例中,一个或多个组件的至少一部分可以用诸如ASIC等硬件组件来实现。在各实施例中,实现功能或包括这些组件的数据的多个组件可以分布在多个计算设备上。各种分布式组件之间的通信可通过各种有线或无线通信机制来执 行。被示为存储在存储器和存储706中的组件中的任一个或多个可通过操作系统704或其他组件被移动到RAM、非易失性存储器中的不同位置,或在RAM和非易失性存储器之间移动。在一些配置中,这些组件可以分布在包括彼此远离的计算设备在内的一个或多个计算设备上。计算设备700可包括方便将数据、场景帧或其他信息显示给用户的视频显示适配器712。尽管在图7中未示出,但是计算设备700可包括基本输入/输出系统(BIOS),以及相关联的组件。计算设备700还可包括用于与网络通信的网络接口单元710。诸如那些存储在存储器和存储706中的软件组件可经由瞬态介质和网络接口单元710来接收。计算设备700可包括一个或多个显示监视器714。计算设备700的实施例可包括一个或多个输入设备(未示出),诸如键盘、定点设备、触摸屏、小键盘、音频组件、话筒、语音识别组件、或其他输入/输出机制。可以理解,图3-4和6的流程图的每个框以及每一个流程图中的框的组合可由软件指令来实现。这些程序指令可被提供给处理器以生成机器,使得在处理器上执行的指令创建用于实现某一流程框或多个框中指定的动作的手段。这些软件指令可由处理器执行来提供用于实现某一流程框或多个框中指定的动作的步骤。此外,流程图中的一个或多个框或框的组合也可与其他框或框的组合同时执行,或甚至以与所示不同的顺序执行,而不背离本发明的范围和精神。以上说明、示例和数据提供了对本发明的组成部分的制造和使用的全面描述。因为可以在不背离本发明的精神和范围的情况下做出本发明的许多实施方式,所以本发明落在所附权利要求的范围内。
权利要求
1.一种向一个或多个承租人(504)提供一个或多个服务的集合的基于计算机的方法(300、400),所述方法包括 a)从承租人接收(302)分配具有资源类型的资源的请求; b)基于所述资源类型来确定(308)对应于所述资源类型的子系统; c)将所述请求转发至(308)所确定的子系统; d)从所确定的子系统接收(310)所述资源的标识; e)存储(312)描述所述资源的资源数据,所述资源数据包括所述资源的标识; f)从使用第一协议的承租人接收(402)执行与所述资源相关的操作的请求; g)检索(412)所述资源数据并将所述资源数据附加(412)到所述执行操作的请求; h)用第二协议来将所述执行操作的请求转发(416)到所确定的子系统。
2.如权利要求I所述的基于计算机的方法,其特征在于,还基于所述执行操作的请求的URI中的分量标识符来检索所述资源数据。
3.如权利要求I所述的基于计算机的方法,其特征在于,还包括提供多个协议组件,每一个协议组件具有对应的协议和计算机指令,用以当做使用所述对应协议的外部组件和使 用所述第二协议的子系统之间的中介来执行。
4.如权利要求I所述的基于计算机的方法,其特征在于,还包括 a)向所述承租人提供用于请求与所述资源相关的一个或多个管理操作的第一URI,所述管理操作包括删除所述资源、解除所述资源的分配、修改所述资源或监视所述资源;以及 b)向所述承租人提供用于请求与所述资源相关的运行时操作的第二URI。
5.一种包括用于向多个承租人提供资源集合的计算机程序指令的计算机可读存储介质,所述程序指令可由一个或多个处理器执行以执行以下动作,包括 a)方便对应的子系统对每一个资源的管理(300); b)提供(400)对与所述资源相关的运行时操作的访问,每一个操作由所述对应的子系统执行; c)通过使用一个或多个承租人协议来与所述多个承租人通信(302、402); d)使用子系统协议来与每一个子系统通信(308、310); e)存储(312)对应于每一个资源的资源数据;以及 f)接收(402)执行与所述资源相关的运行时操作的请求,检索(412)对应于每一个资源的资源数据,将所述对应的资源数据附加(412)到每一个请求,并且选择性地将每一个请求发送(416)到所述对应的子系统。
6.一种用于向一组承租人提供一组服务的基于计算机的系统,包括 a)被配置成执行包括以下各动作的管理网关(202) i)接收(302)分配计算机资源的承租人管理请求;以及 )对于每一个接收到的承租人请求,基于所接收到的管理请求中指定的资源类型来确定(308)对应的子系统,将所述请求转发(308)至所确定的子系统,存储(312)对应于所述计算机资源的资源数据,并且将响应发送(314)到所述计算机资源的请求者; b)被配置成执行与所指定的计算机资源相关的动作的运行时网关(204),包括 i)接收(402)承租人运行时请求;以及 )响应于接收到运行时承租人请求,检索(412)对应于所指定的计算机资源的资源数据,基于检索到的资源数据来选择性地执行(414)处理动作,基于所述资源数据的类型的确定(406)子系统,并且将所述运行时请求转发(416)到所确定的子系统;以及 c)一个或多个协议组件(206、208、210、212)的集合,每一个协议组件都被配置成以对应协议接收(402)每一个承租人运行时请求,从所述承租人运行时请求中提取(404)数据,并且以另一协议转发(416)所述承租人运行时请求。
7.如权利要求6所述的基于计算机的系统,其特征在于,还包括一个或多个流水线组件的集合,所述运行时动作还包括,响应于接收到每一个承租人运行时请求,基于所述检索到的资源数据来选择性地执行每一个流水线组件。
8.如权利要求6所述的基于计算机的系统,其特征在于,还包括预授权组件,所述预授权组件被配置成,在将所述运行时请求转发至所确定的子系统之前对每一个承租人运行时请求进行授权。
9.如权利要求6所述的基于计算机的系统,其特征在于,还包括使承租人能够指定名字空间并且采用一个或多个URI来指定所指定的名字空间中的资源的机制。
10.如权利要求6所述的基于计算机的系统,其特征在于,所述管理网关和运行时网关包括一个或多个处理器,所述一个或多个处理器配置有实现所述管理网关动作和所述运行时网关动作的计算机指令。
全文摘要
本发明涉及多承租人服务网关。公开了用于向多个承租人提供服务的系统和方法。一种系统提供担当承租人和提供资源的多个子系统之间的中介的网关。管理网关处理管理资源的请求。运行时网关处理执行与资源相关的操作的请求。一组协议处理程序将子系统与承租人使用的协议隔离开。组件的流水线提供对来自承租人的请求的处理,诸如授权。对资源的标识使用启用可由承租人指定的多个名字空间的机制来执行。
文档编号H04L29/06GK102710590SQ201210038679
公开日2012年10月3日 申请日期2012年2月20日 优先权日2011年2月21日
发明者C·瓦斯特斯, D·沃滕代克, R·席勒维茨 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1