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


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

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

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

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

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

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

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

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

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

Заметка

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