Поделиться через


Олицетворение клиента

Олицетворение полезно в распределенной вычислительной среде, когда серверы должны передавать клиентские запросы другим серверным процессам или операционной системе. В этом случае сервер олицетворяет контекст безопасности клиента. Затем другие серверные процессы могут обрабатывать запрос так, как если бы исходный клиент сделал его.

сервер олицетворяет вызывающего клиента при последующих вызовах от имени клиента

Например, клиент выполняет запрос к серверу A. Если сервер A должен запрашивать сервер B для выполнения запроса, сервер A олицетворяет контекст безопасности клиента и отправляет запрос серверу B от имени клиента. Сервер Б использует контекст безопасности исходного клиента вместо удостоверения безопасности для сервера A, чтобы определить, следует ли выполнять задачу.

Сервер вызывает RpcImpersonateClient для перезаписи безопасности для потока сервера контекстом безопасности клиента. После завершения задачи сервер вызывает RpcRevertToSelf или RpcRevertToSelfEx для восстановления контекста безопасности, определенного для потока сервера.

При привязке клиент может указать сведения о качестве обслуживания о безопасности, которые указывают, как сервер может олицетворять клиента. Например, один из параметров позволяет клиенту указать, что серверу не разрешено олицетворять его. Дополнительные сведения см. в разделе Качество обслуживания.

Возможность вызова других серверов при олицетворении исходного клиента называется делегированием. При использовании делегирования сервер, олицетворяющий клиента, может вызывать другой сервер и выполнять сетевые вызовы с учетными данными клиента. То есть с точки зрения второго сервера запросы, поступающие с первого сервера, неотличимы от запросов, поступающих от клиента. Не все поставщики безопасности поддерживают делегирование. Корпорация Майкрософт поставляет только один поставщик безопасности, поддерживающий делегирование: Kerberos.

Делегирование может быть опасной возможностью из-за привилегий, которые клиент предоставляет серверу во время удаленного вызова процедуры. Именно поэтому Kerberos разрешает вызовы с уровнем делегирования олицетворения только при запросе взаимной проверки подлинности. Администраторы домена могут ограничить компьютеры, на которых выполняются вызовы с уровнем олицетворения делегирования, чтобы предотвратить вызовы к серверам, которые могут злоупотреблять своими учетными данными, не подозревающие клиенты.

Существует одно исключение из правила делегирования: вызовы с использованием ncalrpc. При выполнении этих вызовов сервер получает права на делегирование, даже если указан уровень олицетворения олицетворения. То есть сервер может вызывать другие серверы от имени клиента. Это работает только для одного удаленного вызова. Например, если клиент A вызывает подсистему балансировки нагрузки локального сервера с помощью ncalrpc , подсистема балансировки нагрузки локального сервера может олицетворить и вызвать удаленный сервер RB. RB сможет действовать от имени клиента A, но только на удаленном компьютере, на котором выполняется RB. Он не может выполнить другой сетевой вызов к удаленному компьютеру C, если подсистема балансировки нагрузки не указала уровень олицетворения делегата при вызове RB.

Примечание

Термин олицетворение представляет два перекрывающихся значения. Первое значение олицетворения — это общий процесс действий от имени клиента. Второе значение — это конкретный уровень олицетворения, называемый олицетворением. Контекст текста, как правило, проясняет значение.