具体实施方式
下面的描述涉及一种委托模型,其中关于中间层计算设备能否委托给后端层计算设备的决策是由后端层计算设备是否将允许中间层计算设备委托给它来确定的。为了实现这种委托模型,在一个实施例中,域控制器计算设备在从中间层计算设备接收委托给后端层计算设备的请求时可以首先确定该后端层计算设备是否位于该域控制器的域中。如果该后端层计算设备位于该域控制器的域中,则该域控制器可以向中间层计算设备提供服务凭据或者其他信息集合,中间层计算设备可以将其呈现给后端层计算设备,从而使得中间层计算设备能够作为客户端计算设备并代表其行动。然而,如果该后端层计算设备不在该域控制器的域中,则该域控制器计算设备可以改为向中间层计算设备提供权标或其他信息集合,中间层计算设备可以将其呈现给不同域的另一域控制器计算设备,从而针对所述另一不同域中的后端层计算设备作为客户端计算设备并代表其行动。按照这种方式,中间层计算设备在其与后端层计算设备通信过程中作为客户端计算设备并代表其行动的能力可能受到由与后端层计算设备相同域的域控制器计算设备所执行(enforce)的策略的控制,并且因此受作为该策略指定者(specifier)的后端层计算设备本身控制。
本文中描述的技术参考了特定类型的通信及通信元件,例如“服务凭据”或者“权标”。然而,这样的引用仅被提供用于向数据的集合分配命名,该命名提供获悉由下面的描述详述的过程和决策作出所必需的信息。这样的引用不旨在将所述技术限于经常与术语相关联的特定标准化协议。因此,尽管本领域技术人员可以认识到可以促使特定的、现有的认证和委托协议(例如Kerberos)执行以下详细描述的元件中的至少一些,但是本文中提供的描述不旨在被限于这样的现有协议,而是同样适用于可以提供并实现下述机制和过程的各个方面的任意消息和数据集合。类似地,本文中描述的技术参考了一个或多个“域控制器”计算设备。这样的参考是为了标记方便并且易于理解,而不旨在将所述技术特别地限于必须执行全套域控制器功能的计算设备。取而代之,本领域技术人员将会认识到,以下参考“域控制器”详细描述的功能可以由任意的可信中央机构(authority)计算设备来执行。因此,本文中采用的术语“域控制器”意指任何可信的中央机构,且术语“域控制器计算设备”意指包括和实现可信中央机构的任何一个或多个计算设备。
尽管不需要,但以下描述将处于正被计算设备执行的计算机可执行指令(例如程序模块)的总体背景中。更具体地讲,所述描述将会参考由一个或多个计算设备或外围设备执行的操作的动作和符号表示,除非另外说明。同样地,将会被理解的是,有时被称为计算机可执行的这样的动作和操作包括由以结构化形式表示数据的电信号的处理单元进行的操纵。该操纵转换所述数据或者在存储器的某个位置维护该数据,其按照本领域技术人员很好理解的方式重新配置或者以另外的方式改变计算设备或外围设备的操作。维护数据的数据结构是具有由数据格式限定的特定属性的物理位置。
一般而言,程序模块包括执行特定任务或者实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。此外,本领域技术人员将会理解,所述计算设备不需限于常规的个人计算机,并且包括其他计算配置,所述计算配置包括手持设备、多处理器系统、基于微处理器或可编程的消费型电子产品、网络PC、微型计算机、大型计算机等。类似的是,所述计算设备不需要限于孤立的计算设备,因为所述机制还可以在通过通信网络链接的分布式计算环境中实践。在分布式计算环境中,程序模块既可以位于本地存储设备中也可以位于远程存储设备中。
参照图1,图示了一种示例性计算设备100,其部分包括可以用于并辅助下述方法的硬件元件。示例性计算设备100可以包括但不限于一个或多个中央处理单元(CPU)120、系统存储器130和将包括系统存储器在内的各种系统组件耦合到处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任意一种,这些总线结构包括利用多种总线架构中任意一种的存储器总线或存储器控制器、外围总线以及本地总线。根据特定的物理实现方式,可以将CPU 120、系统存储器130以及计算设备100的其他组件中的一个或多个物理上共同定位,例如定位在单芯片上。在这种情况下,系统总线121中的一些或全部可能只不过是单芯片结构内的硅路径,并且其在图1中的图示可能只不过是为了图示目的的标记便利。
计算设备100典型地还包括计算机可读介质,所述介质可以包括可被计算设备100访问的任何可用的介质。仅为举例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储信息的任何方法或技术实现的介质,所述信息例如是计算机可读指令、数据结构、程序模块或者其他数据。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字通用盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备、或者可以用于存储所希望的信息并且可被计算设备100访问的任何其他介质。通信介质典型地包含计算机可读指令、数据结构、程序模块或者已调制数据信号(例如载波或其他传送机制)中的其他数据,并且包括任何信息递送介质。仅为举例而非限制,通信介质包括有线介质,例如有线网络或者直接有线连接,还包括无线介质,例如声学、RF、红外及其他无线介质。以上介质的任意组合也应包含在计算机可读介质的范围内。
当使用通信介质时,该计算设备100可以经由与一个或多个远程计算机的逻辑连接而在联网环境中操作。图1所描绘的逻辑连接是与网络180的通用网络连接171,该网络可以是局域网(LAN)、诸如因特网之类的广域网(WAN),或者其他网络。计算设备100通过网络接口或适配器170与通用网络连接171连接,该网络接口或适配器170又与系统总线121连接。在联网的环境中,相对于计算设备100描绘的程序模块或者其一部分或外围程序可以被存储在通过该通用网络连接171与计算设备100通信耦合的一个或多个其他计算设备的存储器中。将理解,所示的网络连接是示例性的,并且可以采用其他方式建立计算设备之间的通信链路。
在计算机存储介质中,系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,其包括只读存储器(ROM)131和随机存取存储器(RAM)132。尤其包含用于引导计算设备100的代码的基本输入/输出系统133(BIOS)典型地存储在ROM 131中。RAM 132典型地包含可由处理单元120立即访问的和/或当前正在运行的数据和/或程序模块。作为举例而非限制,图1图示了操作系统134、其他程序模块135以及程序数据136。RAM 132还可以包含可能与TPM 150的操作相关的数据,例如TCG事件日志190。在一个实施例中,TCG事件日志190可以包括自加电以来或其最后一次重启以来由计算设备100加载或执行的所有模块的唯一标识;加载或执行的相同模块可以产生当前由TPM150在一个或多个PCR中维护的值。
计算设备100还可以包括其他可移除/不可移除、易失性/非易失性计算机存储介质。作为举例而非限制,图1图示了从不可移除、非易失性介质读取或向其写入的硬盘驱动器141。可以与示例性计算设备一起使用的其他可移除/不可移除、易失性/非易失性计算机存储介质包括但不限于盒式磁带、闪存卡、数字通用盘、数字视频带、固态RAM、固态ROM等。硬盘驱动器141典型地通过诸如接口140之类的不可移除存储器接口连接到系统总线121。
以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算设备100提供了对计算机可读指令、数据结构、程序模块及其他数据的存储。例如,在图1中,硬盘驱动器141被图示为存储操作系统144、其他程序模块145以及程序数据146。注意,这些组件既可以与操作系统134、其他程序模块135和程序数据136相同也可以与它们不同。在这里,操作系统144、其他程序模块145和程序数据146被赋予了不同的数字以说明至少它们是不同的副本。
转到图2,其中所示的系统200包括四个计算设备,即客户端计算设备210、中间层计算设备220、后端计算设备230以及域控制器计算设备240。这些计算设备中的每一个可以采用刚才描述的示例性计算设备100的形式,并且可以包括以上参照示例性计算设备100所详细描述的组件的一些或全部。图2的系统200的计算设备被示出为经由通信连接通信地耦合到网络180。为了图示方便,该网络180由单个说明性元件来图示,但是这并不意味着局限于单个网络域或者任何其他类似的网络分区或结构,也不意味着说明也是图2系统200中所示的域A 290外部的网络。取而代之,附图中所用的网络180意在表示图中所示系统的计算设备(包括所示的各种域)之间的所有网络通信连接,并且意在表示直接和间接通信连接。因此,例如,图2所示的系统200图示了一系列的示例性通信,借助这些通信,客户端计算设备210可以通过网络180与中间层计算设备220直接或间接地通信。图2的系统200还图示了示例性通信序列,借助这些通信序列,中间层计算设备220可以同样直接或间接且同样通过网络180与域控制器计算设备240和后端计算设备230通信。因此,尽管将中间层计算设备220、域控制器计算设备240以及后端计算设备230全部图示为相同域A 290的一部分,但是如先前所指示的,网络180意在被认为包括域A 290,而不意在被认为与域A 290分离并远离域A 290的网络单元。如以下将要详细描述的,所示的通信图示了委托机制的示例性操作,其可以使得中间层计算设备220针对后端层计算设备(例如后端计算设备230)代表客户端计算设备210行动。
起初,如图2的系统200所示,客户端计算设备210可以通过经由通信215提供能被域控制器计算设备240签名的客户端标识符或者其他数据集合向中间层计算设备(例如中间层计算设备220)认证它自己。例如,在一个实施例中,在开始与中间层计算设备220的通信(例如通信215)之前,客户端计算设备210可以首先从域控制器计算设备240获得客户端标识符。本领域技术人员会认识到,该域控制器计算设备240可以在提供所述客户端标识符之前执行对客户端计算设备210的评估。例如,域控制器计算设备240可以验证该客户端计算设备210是否符合相关的安全设定,例如是否已经安装了最新版本的反恶意软件应用程序,或者作为另一个实例,是否已经为客户端计算设备210上驻留的各种操作系统和软件应用程序安装了最新的补丁包。这种信息可以由客户端计算设备210提供作为其与域控制器计算设备240通信的一部分,并且可以由域控制器计算设备参照例如事件日志来验证,该事件日志可由客户端计算设备210以可安全验证方式维护。
一旦域控制器计算设备240已确定可以允许客户端计算设备210与受域控制器计算设备240控制并由图2阴影区域表示的域A 290内的其他计算设备通信,则该域控制器计算设备240可以向该客户端计算设备210提供客户端标识符或者其他识别数据集合。这种客户端标识符或者其他标识数据可以由域控制器240签名,使得域A 290内的其他计算设备可以验证其真实性。例如,域A 290中其他计算设备中的每一个,例如中间层计算设备220和后端计算设备230,可以访问域控制器计算设备240的公钥。因此,如果域控制器计算设备240要用其私钥签名该客户端标识符(该私钥对应于域A 290内其他计算设备拥有的公钥),则这些其他计算设备中的每一个可以按照本领域技术人员公知的方式参照公钥来验证这种签名。可替代地,与依靠公/私钥对不同,所述签名可以利用一个或多个共享对称密钥来执行,该对称密钥在域控制器计算设备240与该域(例如域A 290)内与域控制器计算设备240通信的计算设备之间维护。
因此,当客户端计算设备210经由通信215将其客户端标识符传送给中间层计算设备220时,中间层计算设备220可以利用例如域控制器计算设备240的公钥来验证由客户端计算设备210在通信215中提供的客户端标识符实际上是由域控制器计算设备240签名的。在对客户端计算设备210进行这种验证之后,中间层计算设备220可以接受来自客户端计算设备210的请求,并且作为所述请求的一部分,其可以要求客户端计算设备210提供一些标识或者认证信息以证明该客户端计算设备210的用户被授权访问正请求的信息或资源。如下面进一步详细阐述的,随后中间层计算设备220可以利用这种标识和认证信息针对后端层计算设备(例如后端计算设备230)代表客户端计算设备210行动。
如前所指示,客户端计算设备210的用户所请求的信息或资源可能不必与中间层计算设备220协同定位(co-located)。取而代之,中间层计算设备220可以充当客户端计算设备210的单个通信端点从而做出众多请求中的任意一个,并且然后该中间层计算设备220可以与适当的后端层计算设备(例如后端计算设备230)通信,以访问正被客户端计算设备210的用户请求的相关信息或资源。按照这种方式,单个中间层计算设备,例如中间层计算设备220,可以提供对可能分散(spread out across)在多个后端层计算设备的众多信息或其他资源的访问,尽管为了易于图示,图2系统200中仅示出了单个后端层计算设备,即后端计算设备230。
在中间层计算设备220已经例如参照经由通信215传送的客户ID验证(validate)了客户端计算设备210之后,并且在中间层计算设备220已经接收了来自客户端计算设备210用户的标识和认证信息之后(此处的通信未在图2系统200中明确示出以避免图示拥挤),中间层计算设备220可以请求被允许与适当的后端层计算设备(例如后端计算设备230)通信,好像它就是客户端计算设备210一样。在一个实施例中,这种请求225可以连同域控制器计算设备240能用于评价该请求225并遵照该请求执行的信息一起被传送到域控制器计算设备240。例如,如图2的系统200所示,随着请求225,中间层计算设备220可以提供其经由通信215从客户端计算设备210接收到的客户端标识符250,并且该标识符由域控制器计算设备240签名。类似地,仍如图所示,随着请求225,中间层计算设备220可以提供它自己的标识符260,其与客户端标识符250一样也由域控制器计算设备240签名。
在一个实施例中,域控制器计算设备240在接收到请求225以及标识符250和260时可以参照标识符250和260分别验证客户端计算设备210和中间层计算设备220。域控制器计算设备同样可以在确定是否允许中间层计算设备220委托给后端计算设备230之前,首先确定中间层计算设备220希望委托给的后端计算设备230实际上是否在域控制器计算设备240的域A 290内。因此,如图2的系统200中用虚线235表示的,域控制器计算设备240可以确定后端计算设备230是否位于其域290内。如果后端计算设备230位于域A 290内,则域控制器计算设备240可以参考一个或多个策略来确定后端计算设备230是否将允许中间层计算设备220委托给它。
在一个实施例中,可以至少部分地通过可以由后端计算设备230自身或者更具体地由后端计算设备230的管理员建立的策略来告知域控制器计算设备240作出的后端计算设备230是否将允许中间层计算设备220委托给它的确定。本领域技术人员将可以认识到,允许后端计算设备230设置策略不需要引入任何安全风险,或者篡夺域控制器计算设备240的功能,因为该后端计算设备230可以被信任,以正确地确定它可以信任谁委托给它。不同的是,后端计算设备230可以被信任以建立限定其信任其它设备委托给它的准则的策略。
在一个实施例中,域控制器计算设备240在评估所述一个或多个策略确定后端计算设备230是否将允许中间层计算设备220委托给它时可以按照与以上参照客户端计算设备210描述的相似的方式执行对中间层计算设备220的评估。例如,域控制器计算设备240可以验证中间层计算设备220符合相关的安全设定,例如已经安装了最新版本的抗恶意软件应用程序,或者作为另一个实例,已经为客户端计算设备210上驻留的各种操作系统和软件应用程序安装了最新的补丁包。更具体的讲,域控制器计算设备240参考的、包括如所指示地可以由后端计算设备230建立的策略的所述策略可以指定:如果满足某些条件(包括例如参考刚才描述的相关安全设定的条件),则后端计算设备230将仅允许该中间层计算设备220委托给它。然而,相关策略并非仅限于对中间层计算设备220安全方面的分析,而是可以基于任何信息或者信息集合(包括例如正在使用的操作系统的类型、附接的外围设备的类型、计算设备的硬件配置或者任何其他信息或者信息集合之类)限制被允许委托后端计算设备230的计算设备。作为中间层计算设备220的标识符260的一部分或者作为域控制器计算设备240与中间层计算设备220之间的后续通信的一部分,这种信息可以由域控制器计算设备240从中间层计算设备220收集。
在一个实施例中,域控制器计算设备240所参考的用来确定是否允许中间层计算设备220委托给后端计算设备230的一个或多个策略可以参考中间层计算设备220上执行的服务以及物理中间层计算设备220本身。在这种实施例中,中间层计算设备220的标识符260不仅可以包括物理计算设备自身的标识符,还可以包括一个或多个服务的标识符或者在该中间层计算设备220上执行并且将要执行委托的其他计算机可执行指令的集合。因此,下面为了说明的目的,对中间层计算设备220的标识(例如标识260)的参考意指包括物理设备自身的标识、一个或多个服务的标识或者将要执行委托的其他正在执行的计算机可执行指令、或者其任意组合。
基于对所述策略的考虑,如果域控制器计算设备240确定后端计算设备230将允许中间层计算设备220委托给它,则如通信245所示,该域控制器计算设备240可以提供服务凭据或者其他信息集合,所述服务凭据或信息集合可以被域控制器签名并且可以指示中间层计算设备220将被允许作为客户端计算设备210与后端计算设备230通信。然后,一旦接收到通信245,中间层计算设备220继续向后端计算设备230发出请求,如通信255所示,该请求是中间层计算设备先前从客户端计算设备210接收来的。如图2的系统200所示,该通信255还可以包括服务凭据270,该凭据可能已经由中间层计算设备220经由通信245从域控制器计算设备240接收。
尽管为了避免图示拥挤,图2的系统200中并未具体示出,但是后端计算设备230可以例如参照域控制器的公钥来评估提供有客户端请求255的服务凭据270,以验证其实际上是适当且正确签名的服务凭据,并且如果后端计算设备230这样确定,那么其可以继续与该中间层计算设备220通信,好像该中间层计算设备220是客户端计算设备210。同样,后端计算设备230可以请求中间层计算设备220认证,如同在客户端计算设备210与后端计算设备230直接通信的情况下被要求将其自身向后端计算设备230认证一样。在这样的认证中,后端计算设备230可以基于客户端计算设备210自身的身份、基于客户端计算设备210的单独用户或用户组的身份或者其任意组合来确定是否准许客户端的请求。因此,为了这种认证的目的,中间层计算设备220可以从客户端计算设备210获得这种信息,并且可以将该信息作为原始通信255的一部分或者后续通信的一部分提供给后端计算设备230。
按照这种方式,中间层计算设备220可以从后端计算设备230获得由客户端计算设备210请求的信息和资源,随后该中间层计算设备220可以响应于客户端计算设备的原始请求将所述信息和资源返回到客户端计算设备210。本领域技术人员将会认识到,在域A 290内可以添加附加的后端层计算设备,并且可以允许中间层计算设备220按照相同方式委托给那些后端层计算设备,从而允许中间层计算设备220访问实际上潜在无限数量的信息和资源,同时仍然允许客户端计算机210(或许是中间层计算设备220)具有用于访问所述信息和那些资源的单独通信参考。此外,当前描述的机制可以被以递归方式利用,其中例如后端计算设备230又能充当中间层计算设备并且可以委托给另外不同的后端计算设备。这种另外的委托可以根据本文中描述的机制执行,并且可以基于可以以类似方式评估的可独立设定的策略。
如前所述,尽管图2的示例性系统200仅图示了单个后端计算设备230,但本文中提供的描述同样适用于单个中间层计算设备与多个后端层计算设备之间的通信,其中中间层计算设备充当客户端计算设备的聚合器。例如,如果客户端计算设备210想要请求遍布多个后端层计算设备(包括例如后端计算设备230和其他后端层计算设备)的信息,则中间层计算设备220可以按照与上述相同的方式委托给这种其他后端层计算设备,并且这将在下面进行更详细的描述。中间层计算设备220然后可以从所述多个后端层计算设备获得相关信息,该后端层计算设备可以包括图2所示并且在本说明书中参考的后端计算设备230,并且该后端层计算设备在将客户端计算设备210的信息呈现给客户端计算设备210作为对这种设备做出的请求的响应之前,可以收集并汇集客户端计算设备210的这种信息。
在其他实施例中,为了响应客户端计算设备210的请求,中间层计算设备220需要代表客户端计算设备210委托给的后端计算设备230可能不必位于相同的域,例如域A 290内。转到图3,其中所示的系统300图示了一种多域系统,其中域控制器计算设备240和中间层计算设备220保持在域A 290中,但是中间层计算设备220需要委托给的后端计算设备230可以为域B 390的一部分,该域可以具有它自己的域控制器计算设备340。为了将域A 290的域控制器计算设备240与域B 390的域控制器计算设备340区分开,图3中将用简写标记“DC1”来参考域A 290的域控制器240,并且图3中用简写标记“DC2”来表示域B 390的域控制器340。此外,先前图2中所示的相同通信和元件在图3的系统300中保留它们的相同的数字标识符。
因此,如从图3的系统300可以看出,客户端计算设备210仍可以按照前述方式与中间层计算设备220通信,并且中间层计算设备220仍可以也按照前述方式与域控制器计算设备240通信。然而,当经由前述的通信225从中间层计算设备220接收作为客户端计算设备210与后端计算设备230通信的请求时,域控制器计算设备240同样如前所述那样可以首先确定(如虚线235所示)该后端计算设备230与域控制器计算设备240是否位于相同的域,即域A 290中。在图3的系统300表示的特定实例中,可以看到,该后端计算设备230与域控制器计算设备240不在相同的域内。
因此,该域控制器计算设备240并非评估策略以确定后端计算设备230是否将允许中间层计算设备220委托给它,而是改为可以经由通信315向中间层计算设备220提供可以被域控制器计算设备240签名的权标或者其他信息集合。这种权标或者其他信息集合可以使中间层计算设备220能够将其委托请求指向不同的域控制器计算设备,例如在图3所示实例中的域控制器计算设备340。因此,在一个实施例中,经由通信315提供的权标可以指向域控制器计算设备340。
当接收到由通信315提供的权标时,中间层计算设备220可以向域B 390中的域控制器计算设备340发送请求325,该请求可与先前描述的请求225类似。然而,尽管前述请求225还包含均要由域控制器计算设备240签名的客户端标识符250和中间层标识符260,但是中间层计算设备220已指向域控制器计算设备340的请求325可以包含通过通信315接收的权标320(该权标可以是前述的权标),并且还可以包含被域控制器计算设备240签名的中间层计算设备220的标识符330。在一个实施例中,与经由通信315提供的权标320类似,中间层计算设备220的标识符330同样可以指向域控制器计算设备340。在这种实施例中,或者作为通信315的一部分,或者作为与通信315一起发生的通信的一部分,中间层计算设备220可以从域控制器计算设备240请求或者另外接收被域控制器计算设备240签名且指向域控制器计算设备340的标识符330。此外,在一个实施例中,可以将权标320和标识符330经由可替代路径(包括例如从域控制器计算设备240直接提供或者其他可替代路径)传送到域控制器计算设备340。
当域控制器计算设备340接收请求325时,其首先可以按照与前面针对域控制器计算设备240所述类似的方式确定该请求325所参考的后端计算设备230与域控制器计算设备340是否位于相同的域中,即图3所示的说明性系统300中的域B 390中。和前面一样,这种确定在图3中用虚线335图示。在本实例中,因为后端计算设备230与域控制器设备340位于相同的域中,即域B 390中,所以域控制器计算设备340可以继续通过例如参考一个或多个策略来确定后端计算设备230是否将允许中间层计算设备220委托给它。
在执行这种确定的过程中,域控制器计算设备340可以首先验证由中间层计算设备220提供的作为请求325一部分的权标320和中间层标识符330正确地被域控制器计算设备240签名。例如,域控制器计算设备340可以参照其可以访问的域控制器计算设备240的公钥做出这种确定。一旦域控制器计算设备340已经执行这种验证,则其可以查阅一个或多个策略来确定例如后端计算设备230是否允许中间层计算设备220委托给它。如前所述,由域控制器计算设备340查阅的策略可以包括后端计算设备230建立的策略,这是因为后端计算设备230可以被信任以建立定义其信任谁委托给它的策略。还如前所述,由域控制器计算设备340查阅的策略实际上可以参考中间层计算设备220的任何方面,包括例如正由中间层计算设备220执行的操作系统、中间层计算设备220的硬件,以及中间层计算设备220的安全属性,例如是否已经应用了最新的补丁包以及是否使用了最新版本的抗恶意软件。这样的信息可以包含在中间层计算设备220可经由通信325提供给域控制器计算设备340的中间层标识符330中,或者可替代地,这样的信息可以经由域控制器计算设备340与中间层计算设备220之间的、结合通信325执行的另外的通信交换来提供。
如果域控制器计算设备340基于上述评估确定应当允许中间层计算设备220委托给后端计算设备230,则域控制器计算设备可以经由图3所示的通信345提供服务凭据或者其他信息集合,所述服务凭据或信息集合可以被域控制器计算设备340签名并且可以使得中间层计算设备220能够委托给后端计算设备230。如前所述,然后中间层计算设备220可以向后端计算设备230发出请求,该请求最初是由客户端计算设备210向中间层计算设备220发出的,如通信355所示。此外,请求355可以包括可能已经从域控制器计算设备340经由通信345提供的服务凭据370。
如前所述,当接收到请求355时,后端计算设备230可以评估该服务凭据370并且验证其被包括后端计算设备230的域(例如图3所示的图示实例中的域B 390)的域控制器计算设备340正确地签名。如果后端计算设备230验证了该服务凭据370,则其可以继续与中间层计算设备220通信,如同该中间层计算设备220就是客户端计算设备210。按照这种方式,中间层计算设备220可以代表客户端计算设备210从后端计算设备230获得信息和资源,并且然后可以响应于由客户端计算设备210指向中间层计算设备220的请求将该信息和那些资源回呈给客户端计算设备210。
在某些情形下,中间层计算设备220在最终能够委托给后端层计算设备(例如后端计算设备230)之前可能需要与超过两个域中的域控制器计算设备通信。在这种情况下,该域控制器计算设备的操作,并且甚至是整个系统的操作可以按照与上述类似的方式进行。转到图4,图中所示的系统400提供了这种系统以及其中所示的各种元件的操作和通信的一个说明性实例。可以看出,中间层计算设备220在试图委托给后端计算设备230时,首先可以经由通信225联系域控制器计算设备240,并且该域控制器计算设备240可以基于虚线235所示的评估来确定后端计算设备230并非位于域控制器计算设备240的域内,即图4的示例性系统400中的域A 290内。因此,和前面描述的一样,域控制器计算设备240可以经由例如通信315向中间层计算设备220提供到另一域控制器计算设备的权标。然后,还如前所述,中间层计算设备220可以经由通信325向不同域(即图4所示的示例性系统400中的域B 390)中的这种域控制器计算设备340提供该权标320以及中间层标识符330。
然而,在图4的示例性系统400中,中间层计算设备220设法委托给的后端计算设备230不是域B 390的一部分。取而代之,在一个实施例中,域B 390可以仅仅是“更接近”具有后端计算设备230的域,例如图4所示示例性系统400中的域C 490。该域B 390的域控制器计算设备340可能已被域控制器计算设备240选定(当发送给它的权标已经生成并被提供给中间层计算设备220时),这是因为域控制器计算设备240相信域B 390“更接近”后端计算设备230。在一个实施例中,在选择下一域控制器计算设备时,域控制器计算设备240至少可以确保所述提名(referral)最终不会回送到自己身上。转回到图4的所示系统400,如图4中虚线335所示的域控制器计算设备340所作出的关于后端计算设备230是否位于其域内的确定可以揭示出后端计算设备230实际上与域控制器计算设备340并非位于相同域,即域B 390中。因此,按照与以上参照域控制器计算设备240所述类似的方式,域控制器计算设备340可以向中间层计算设备220提供响应345,从而将该域控制器计算设备340签名的权标提供给中间层计算设备220,该权标指示中间层计算设备220在其与后端计算设备230的通信过程中设法充当客户端计算设备210。如前所述,在一个实施例中,经由通信345提供的权标可以指向另一特定的域控制器计算设备,例如域C 490中的域控制器计算设备440。如前面一样,为了区分图4所示的域控制器计算设备,图4中将使用简写标记“DC3”来参考域控制器计算设备440。
中间层计算设备220在从域控制器计算设备340接收到通信345时可以像前面一样将作为客户端计算设备210与后端计算设备230通信的请求425指向到由该通信345指定的其他域控制器计算设备,例如在图4所示的示例性系统400中为域控制器计算设备440。该请求425可以包括已经通过通信345从域控制器计算设备340接收的权标420,以及中间层标识符430。在一个实施例中,为了获得由域控制器计算设备340签名的中间层标识符430,中间层计算设备220可以请求域控制器计算设备340基于中间层计算设备220作为请求325的一部分提供给域控制器计算设备340的中间层标识符330生成这种标识符430。如果域控制器计算设备340信任该域控制器计算设备240,则域控制器计算设备340可以通过自己签名中间层标识符330中先前已经被域控制器计算设备240签名的信息来生成中间层标识符430。和前面一样,在一个实施例中,可以特别将中间层标识符430和权标420指向到域控制器计算设备440。
然后,该域控制器计算设备440可以按照与先前关于域控制器计算设备240和域控制器计算设备340所述类似的方式继续工作。具体讲,如虚线435所示,域控制器计算设备440可以验证后端计算设备230实际上是否与域控制器计算设备440位于相同域内,即图4的示例性系统400中的域C 490,这被识别为请求425的一部分。在图4所示实例中,因为后端计算设备230位于与域控制器计算设备440相同的域中,所以该域控制器计算设备440可以继续参考包括例如后端计算设备230建立的策略在内的一个或多个策略以确定后端计算设备230是否将允许中间层计算设备220委托给它。如前所指示,域控制器计算设备440查阅的策略可以参考由中间层计算设备220的诸多方面,并且有关这些方面的信息可以包含在中间层计算设备220经由通信425可提供给域控制器计算设备440的中间层标识符430中,或者可替代地可以经由域控制器计算设备440与中间层计算设备220之间结合通信425执行的另外的通信交换来提供这样的信息。
和前面一样,如果域控制器计算设备440确定将允许中间层计算设备220委托给后端计算设备230,则域控制器计算设备440可以经由通信445将可被域控制器计算设备440签名并且可以使得中间层计算设备220能够作为客户端计算设备210与后端计算设备230通信的服务凭据返回中间层计算设备220。随后,同样如前所述,中间层计算设备220可以向后端计算设备230发出适当的请求,如通信455所示,并且可以包括域控制器计算设备440经由通信445提供的服务凭据470。此外,尽管仅跨经一个、两个和三个域进行了图示,但是本领域技术人员可以理解,本文中所述的机制同样适用于跨经任何数量的域或其他类似分区。
转到图5,图中所示的流程图500图示了根据上述机制可由中间层计算设备执行的示例性步骤序列。起初,在步骤510处,可以接收指向作为后端层计算设备一部分的信息或资源的客户请求。发出请求的客户端计算设备也可以例如通过提供标识符、权标或者可能已经被域控制器计算设备签名的其他类似信息来认证自己。在步骤520处,可以验证所提供的信息,例如通过使用域控制器计算设备的公钥。如果在步骤520处认证失败,则所述处理继续到步骤570,此时可以报错。相关处理可以然后在步骤580处结束。
然而,可替代地,如果在步骤520处客户端认证成功,则在步骤530处可以将均能被域控制器计算设备签名的由客户端计算设备提供的信息以及有关中间层计算设备的其他信息连同允许作为客户端计算设备与后端层计算设备通信的请求一起提供给域控制器计算设备。响应于步骤530处信息的提供,在步骤540处可以接收到可被域控制器签名的服务凭据或者其他类似的信息集合。如果在步骤540处接收到所述服务凭据,则所述处理可继续到步骤550,并且可以将所述服务凭据提供给适当的后端层计算设备,从而代表其请求已在510处被接收的客户端计算设备与后端层计算设备建立通信。尽管这种通信可以按照本领域技术人员公知的方式进行,与本说明书相关的处理然后在步骤580处结束。然而,如果在步骤540处未接收到服务凭据,则所述处理可继续到步骤560,取代服务凭据,可以接收到权标或者其他信息集合,该权标或信息集合可以将作为客户端计算设备与后端层计算设备通信的请求指向到不同的域控制器计算设备。如果在步骤560处接收到所述权标,则所述处理可返回步骤530,并且可以将请求指向到另一个不同的域控制器计算设备。可替代地,如果在步骤560处未接收到权标并且在步骤540处未接收到服务凭据,则所述处理继续到步骤570,可向客户端报告相应错误。按照这种方式,中间层计算设备可以继续请求获得一个或多个域控制器计算设备的允许以与后端层计算设备通信,直到请求到达与后端层计算设备位于相同域中的域控制器计算设备为止,该域控制器计算设备然后作出有关一个或多个相关策略是否指示后端层计算设备将允许中间层计算设备委托给它的决定。
参照图6,图中所示的流程图600图示了根据以上详细描述的机制可以由域控制器计算设备执行的示例性步骤序列。起初,在步骤610处,可以从中间层计算设备接收到作为客户端计算设备与后端层计算设备通信的请求。然后所述处理可继续到步骤620,此时可以确定在步骤610中接收到的请求中指定的后端层计算设备与执行流程图600各个步骤的计算设备是否位于相同的域中。如果在步骤620处确定后端层计算设备并非位于相同域中,则所述处理可继续到步骤660,此时可以生成权标或者其他信息集合,并且将该权标或信息集合传送给步骤610中从其接收请求的中间层计算设备。在步骤660处生成并传送的权标或者其他信息集合可以包括将中间层计算设备指向到另一域控制器的信息,还可以包括通知该另一域控制器所述中间层计算设备正在设法充当客户端计算设备与后端层计算设备进行通信的信息。此外,如以上详细描述的,在步骤660处生成并传送的信息还可以包括可以被域控制器计算设备签名的中间层计算设备的标识,其包括例如各种配置信息。如图所示,相关处理在步骤670处结束。
可替代地,如果在步骤620处确定步骤610处接收到的请求所被指向到的后端层计算设备实际上位于相同域内,则所述处理可继续到步骤630,此时可以对一个或多个策略进行评估以确定后端层计算设备是否允许发出步骤610处接收到的请求的中间层计算设备委托给它。如前所述,可以参照已经被相关后端层计算设备限定并由其提供的一个或多个策略来做出在步骤630处的决定。此外,同样如前所述,步骤630处的决定可以包括确定请求的中间层计算设备是否符合由相关策略建立的任何因素,包括例如涉及中间层计算设备硬件或软件配置的因素。同样,步骤630处的决定可以包括确定中间层计算设备在步骤610处提供的信息是否被域控制器计算设备正确签名并且指示中间层计算设备符合相关策略参考的因素。可替代地,同样如前所述,步骤630处的确定可以包括为了确定中间层计算设备是否符合相关策略参考的因素而与中间层计算设备进行的其他通信,然而为了便于说明,这些附加的通信并未在图6的流程图600中具体示出。
如果在步骤630处确定了允许中间层计算设备委托给后端层计算设备,则所述处理可继续到步骤640,此时可以生成准许中间层计算设备在客户端计算设备与后端层计算设备的通信中充当该客户端计算设备的服务凭据或其他信息,并且将该服务凭据或信息传送给中间层计算设备。相关处理然后可继续到步骤670。可替代地,如果在步骤630处确定相关策略不允许中间层计算设备委托给后端层计算设备,则所述处理可继续到步骤650,此时可以向中间层计算设备报错。相关处理然后可以在步骤670处结束。
通过以上的描述可以看出,提供了一种如由被委托的计算设备来告知一个计算设备要委托给另一计算设备的能力的委托机制。考虑到本文中描述的主题的许多可能的变化,我们要求保护可能落入所附权利要求及其等价物范围内的所有这样的实施例作为我们的发明。