掩蔽(组件服务)
确定模拟行为有两个要素:客户端通过模拟级别显式授予服务器的权限,以及服务器代表客户端进行调用时掩饰自己标识的能力。 后一种功能称为掩蔽。 掩蔽与服务器调用时所依据的安全标识有关。
当服务器模拟客户端时,可以直接访问客户端的安全凭据。 从狭义上说,服务器线程采用客户端的标识。 但是,当服务器在其进程外进行调用时,客户端标识不一定投射为调用所依据的标识。
启用掩蔽后,服务器模拟客户端的调用可以在客户端的标识下进行。 禁用掩蔽后,服务器调用将在服务器的标识下进行。
此外,还有两种形式的掩蔽:静态掩蔽和动态掩蔽,如下所述:
- 使用静态掩蔽模拟。 使用 CoSetProxyBlanket 调用时向下游服务器提供一次原始客户端标识(已实现为服务器线程令牌),在代理上设置一次原始客户端标识,该线程令牌将在后续方法调用中使用。
- 使用动态掩蔽模拟。 原始客户端标识在每次对下游服务器进行方法调用时都发现为服务器线程令牌。 实际上,可以动态确定呈现的标识。 执行此操作所需的开销可能要高得多。
对于 COM+ 应用程序,采用默认配置来实现动态掩蔽功能。 这可以通过编程方式和管理方式进行更改。 虽然动态掩蔽可能会产生性能开销,但还提供通常在一开始使用模拟时所需的灵活性。
有关掩蔽的更多详细信息和可能的行为的精确描述,请参阅 COM 文档中的掩蔽。