Desativando a segurança de ativação
Normalmente, a ativação usa configurações de segurança padrão. No entanto, você pode controlar a segurança de ativação especificando uma estrutura COAUTHINFO, que é um membro da estrutura COSERVERINFO que é passada para as funções de ativação. Se o cliente especificar um nível de autenticação de RPC_C_AUTHN_LEVEL_NONE na estrutura COAUTHINFO, a autenticação não será tentada. Caso contrário, a ativação segura será tentada e, se a autenticação falhar, a ativação falhará.
Se o cliente não especificar uma estrutura COAUTHINFO explícita e, em vez disso, definir o ponteiro como NULL, COM tentará autenticar o cliente. Se não for possível autenticar o cliente, o COM verificará o descritor de segurança de permissão de inicialização para ver se há uma DACL NULL ou uma ACL que permita acesso a Todos. Se essa verificação for bem-sucedida, o servidor será iniciado. Portanto, mesmo que o cliente não especifique uma estrutura COAUTHINFO, a ativação não segura pode ocorrer quando o servidor permite.
Observação
Para permitir que usuários de rede não autenticados executem um aplicativo COM, as funções do aplicativo devem incluir o usuário anônimo. A partir do Windows Server 2003, por padrão, o usuário anônimo não é incluído no grupo Todos.
Por que um cliente deseja desativar a segurança de ativação explicitamente, mesmo que a ativação não segura eventualmente ocorra se o servidor permitir? Porque desativar explicitamente a segurança de ativação aumenta o desempenho quando o cliente não deseja ou não precisa de verificações de segurança.
As seguintes coisas devem ser feitas para desativar explicitamente a segurança de ativação:
- O cliente deve especificar um nível de autenticação de RPC_C_AUTHN_LEVEL_NONE na estrutura COAUTHINFO que é um membro da estrutura COSERVERINFO fornecida para a função de ativação.
- O cliente deve especificar um nível de representação de RPC_C_IMP_LEVEL_IMPERSONATE na estrutura COAUTHINFO que é um membro da estrutura COSERVERINFO fornecida para a função de ativação. Se esse valor não for repassado, você receberá RPC_S_SERVER_UNAVAILABLE.
- O servidor deve especificar Todos para Permissões de Inicialização Padrão. A maneira recomendada de executar essa tarefa é usar Dcomcnfg.exe da seguinte maneira:
- Execute Dcomcnfg.exe.
- Na página Aplicativos, selecione o aplicativo que representa o servidor. Clique no botão Propriedades (ou clique duas vezes no aplicativo selecionado).
- Na página de propriedades Segurança, clique no botão Usar Permissões de Início Personalizadas.
- Clique no botão Editar na área Permissões de inicialização .
- Na caixa de diálogo Permissões do Valor do Registro, clique no botão Adicionar.
- Selecione a entrada para Todos na caixa de listagem.
- Na caixa de listagem Tipo de Acesso, escolha Permitir Inicialização.
- Clique no botão OK.
Observação
No Windows Server 2003, o recurso de autenticação para o aplicativo do sistema COM+ inclui o valor EOAC_DISABLE_AAA. Esse valor, que desabilita ativações ativadas como ativador (AAA), é usado na chamada CoInitializeSecurity ao iniciar o aplicativo do sistema. Definir o recurso de autenticação como EOAC_DISABLE_AAA permite que um aplicativo executado em uma conta privilegiada (como LocalSystem) ajude a impedir que sua identidade seja usada para iniciar componentes não confiáveis.
Tópicos relacionados