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


Настройка безопасности на уровне прокси-сервера интерфейса

Иногда клиенту требуется точный контроль над безопасностью при вызовах определенных интерфейсов. Например, безопасность может быть задана на низком уровне для процесса, но вызовы определенного интерфейса могут потребовать более высокого уровня проверки подлинности, например шифрования. Методы интерфейса 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).

Настройка безопасности для COM-приложений