委托和模拟

在客户端/服务器方案中,一台服务器通常调用另一台服务器来代表客户端完成某个任务。 向服务器授予代表客户端执行操作的权限的情况称为委托

从安全的角度来看,委托会引发两个问题:

  • 代表客户端执行操作时,应允许服务器执行哪些操作?
  • 当服务器代表客户端调用其他服务器时,服务器会显示什么标识?

为了处理这些问题,COM 提供了以下功能。 客户端可以设置模拟级别,以确定服务器能够充当客户端的程度。 如果客户端向服务器授予足够的权限,服务器可以模拟(假装是)客户端。 模拟客户端时,服务器只能访问客户端有权使用的对象或资源。 充当客户端的服务器还可以启用掩蔽,以掩蔽其自己的标识,并在调用其他 COM 组件时投影客户端的标识。

Diagram that shows how the server acting as the client can enable cloaking.

请考虑上图所示的方案,其中 A 和 B 是来自 C 的其他计算机上的进程。进程 A 调用 B,B 调用 C。客户端 A 设置模拟级别。 B 设置掩蔽功能。 如果 A 设置允许模拟的模拟级别,B 可以在代表 A 调用 C 时模拟 A。 呈现给进程 C 的标识将是 A 的标识或 B 的标识,具体取决于 B 是否启用了掩蔽。如果启用了掩蔽,则呈现给进程 C 的标识将是 A 的标识。如果未启用掩蔽,会将 B 的标识呈现给 C。

有关详情,请参阅以下主题: