Share via


Definindo a segurança no nível de proxy da interface

Às vezes, o cliente precisa de controle refinado sobre a segurança em chamadas para interfaces específicas. Por exemplo, a segurança pode ser definida em um nível baixo para o processo, mas as chamadas para uma interface específica podem exigir um nível de autenticação mais alto, como criptografia. Os métodos da interface IClientSecurity permitem que o cliente altere as configurações de segurança associadas às chamadas para uma interface específica, controlando as configurações de segurança no nível de proxy de interface.

O cliente pode consultar um objeto existente para IClientSecurity e, em seguida, chamar o método IClientSecurity::QueryBlanket para descobrir quais são as configurações de segurança atuais para um proxy de interface específico. O método IClientSecurity::SetBlanket pode ser usado para modificar as configurações de segurança de um proxy de interface individual no objeto antes de chamar um dos métodos da interface. As novas configurações se aplicam a quaisquer chamadores futuros dessa interface específica. O método IClientSecurity::CopyProxy fornece uma maneira para o cliente copiar um proxy de interface para que as chamadas subsequentes para SetBlanket na cópia não afetem os chamadores do proxy original.

SetBlanket é comumente usado para elevar o nível de autenticação de um proxy de interface específico para um nível mais alto de proteção de segurança. No entanto, em algumas situações, também pode ser útil reduzir o nível de autenticação para um proxy de interface específico. Por exemplo, suponha que o nível de autenticação padrão para o processo seja algum valor diferente de RPC_C_AUTHN_LEVEL_NONE e o cliente e o servidor estejam em domínios separados que não confiam um no outro. Nesse caso, as chamadas para o servidor falharão, a menos que o cliente chame SetBlanket para reduzir o nível de autenticação para RPC_C_AUTHN_LEVEL_NONE.

Os clientes que usam a implementação padrão de IClientSecurity fornecida pelo gerenciador de proxy podem chamar as funções auxiliares CoQueryProxyBlanket, CoSetProxyBlanket e CoCopyProxy em vez de chamar os métodos IClientSecurity diretamente. As funções auxiliares simplificam o código, mas são um pouco menos eficientes do que chamar os métodos IClientSecurity correspondentes diretamente.

A interface IClientSecurity é implementada localmente para o cliente pelo gerenciador de proxy. Alguns objetos empacotados personalizados podem não oferecer suporte a IClientSecurity.

IClientSecurity funciona com todos os serviços de autenticação suportados (atualmente NTLMSSP, Schannel e o protocolo Kerberos v5).

Definindo a segurança para aplicativos COM