Делегирование и олицетворение
В сценариях с клиентом или сервером обычно один сервер вызывает другой сервер для выполнения некоторых задач от имени клиента. Ситуация, когда сервер получает полномочия действовать от имени клиента, называется делегированием.
С точки зрения безопасности возникают две проблемы, касающиеся делегирования:
- Что следует делать серверу при действии от имени клиента?
- Какое удостоверение представляет сервер при вызове других серверов от имени клиента?
Для решения этих проблем COM предоставляет следующие функциональные возможности. Клиент может задать уровень олицетворения, определяющий, в какой степени сервер сможет выступать в качестве клиента. Если клиент предоставляет серверу достаточно полномочий, сервер может олицетворить (притворяться ) клиентом. При олицетворении клиента сервер получает доступ только к тем объектам или ресурсам, которым у клиента есть разрешение на использование. Сервер, действующий в качестве клиента, также может включить маскирование собственных удостоверений и проецировать удостоверение клиента в вызовах других com-компонентов.
Рассмотрим сценарий, показанный на предыдущем рисунке, где A и B обрабатываются на другом компьютере, отличном от C. Обработка вызовов B и B вызовов C. Client A задает уровень олицетворения. B задает возможность маскирования. Если A задает уровень олицетворения, разрешающий олицетворение, B может олицетворение A при вызове C от имени A. Удостоверение, представленное для обработки C, будет удостоверением A или удостоверением B в зависимости от того, включена ли маскировка B. Если маскировка включена, удостоверение, представленное для обработки C, будет иметь значение A. Если маскировка не включена, удостоверение B будет представлено в C.
Дополнительные сведения см. в следующих разделах: