委派和模拟
在客户端/服务器方案中,一台服务器通常调用另一台服务器来代表客户端完成某些任务。 向服务器授予代表客户端执行作的权限的情况称为 委托。
从安全的角度来看,委托出现了两个问题:
- 代表客户端执行作时,应允许服务器执行哪些作?
- 当服务器代表客户端调用其他服务器时,服务器会显示什么标识?
为了处理这些问题,COM 提供以下功能。 客户端可以设置一个 模拟级别,以确定服务器能够充当客户端的程度。 如果客户端向服务器授予足够的权限,服务器可以 模拟客户端(假装)客户端。 模拟客户端时,服务器只能访问客户端有权使用的那些对象或资源。 充当客户端的服务器还可以启用 遮盖 来掩码自己的标识,并在调用其他 COM 组件时投影客户端的标识。
请考虑上图所示的方案,其中 A 和 B 是来自 C 的其他计算机上的进程。进程 A 调用 B 和 B 调用 C。客户端 A 设置模拟级别。 B 设置遮盖功能。 如果 A 设置允许模拟的模拟级别,B 可以代表 A 调用 C 时模拟 A。 呈现给处理 C 的标识将是 A 的标识或 B 的标识,具体取决于 B 是否启用了遮盖。如果启用了遮盖,则呈现给处理 C 的标识将是 A 的标识。如果未启用遮盖,B 的标识将呈现给 C。
有关详细信息,请参阅以下主题: