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:
    1. Execute Dcomcnfg.exe.
    2. Na página Aplicativos, selecione o aplicativo que representa o servidor. Clique no botão Propriedades (ou clique duas vezes no aplicativo selecionado).
    3. Na página de propriedades Segurança, clique no botão Usar Permissões de Início Personalizadas.
    4. Clique no botão Editar na área Permissões de inicialização .
    5. Na caixa de diálogo Permissões do Valor do Registro, clique no botão Adicionar.
    6. Selecione a entrada para Todos na caixa de listagem.
    7. Na caixa de listagem Tipo de Acesso, escolha Permitir Inicialização.
    8. 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.

 

Desativando a segurança de chamadas