Настройка безопасности на уровне прокси-сервера интерфейса
Иногда клиенту требуется точный контроль над безопасностью при вызовах определенных интерфейсов. Например, безопасность может быть задана на низком уровне для процесса, но вызовы определенного интерфейса могут потребовать более высокого уровня проверки подлинности, например шифрования. Методы интерфейса IClientSecurity позволяют клиенту изменять параметры безопасности, связанные с вызовами определенного интерфейса, управляя параметрами безопасности на уровне прокси интерфейса.
Клиент может запрашивать существующий объект для IClientSecurity, а затем вызывать метод IClientSecurity::QueryBlanket, чтобы узнать, какие параметры безопасности имеются для конкретного прокси-сервера интерфейса. Метод IClientSecurity::SetBlanket можно использовать для изменения параметров безопасности для отдельного прокси-сервера интерфейса в объекте перед вызовом одного из методов интерфейса. Новые параметры применяются ко всем будущим вызывающим пользователям этого конкретного интерфейса. Метод IClientSecurity::CopyProxy предоставляет возможность клиенту копировать интерфейсный прокси, чтобы последующие вызовы SetBlanket на копии не влияют на вызовы к оригинальному прокси.
SetBlanket обычно используется для повышения уровня проверки подлинности конкретного прокси-сервера интерфейса до более высокого уровня безопасности. Однако в некоторых ситуациях может быть полезно снизить уровень проверки подлинности для конкретного прокси-сервера интерфейса. Например, предположим, что уровень проверки подлинности по умолчанию для процесса является некоторым значением, кроме RPC_C_AUTHN_LEVEL_NONE, а клиент и сервер находятся в отдельных доменах, которые не доверяют друг другу. В этом случае вызовы сервера завершаются ошибкой, если клиент не вызывает SetBlanket, чтобы снизить уровень проверки подлинности до RPC_C_AUTHN_LEVEL_NONE.
Клиенты, использующие реализацию IClientSecurity, предоставляемую диспетчером прокси, могут вызывать вспомогательные функции CoQueryProxyBlanket, CoSetProxyBlanketи CoCopyProxy вместо того, чтобы напрямую вызывать методы IClientSecurity. Вспомогательные функции упрощают код, но немного менее эффективны, чем вызов соответствующих методов IClientSecurity напрямую.
Интерфейс IClientSecurity реализуется локально для клиента прокси-диспетчером. Некоторые настраиваемые маршалированные объекты могут не поддерживать IClientSecurity.
IClientSecurity работает со всеми поддерживаемыми службами проверки подлинности (в настоящее время NTLMSSP, Schannel и протоколом Kerberos версии 5).
Связанные разделы