Compartilhar via


Utilizando Personificação com segurança de transporte

A representação é a capacidade de um aplicativo do servidor assumir a identidade do cliente. É comum que os serviços usem a representação ao validar o acesso aos recursos. O aplicativo do servidor é executado usando uma conta de serviço, mas quando o servidor aceita uma conexão de cliente, ele representa o cliente para que as verificações de acesso sejam executadas usando as credenciais do cliente. A segurança do transporte é um mecanismo para passar credenciais e proteger a comunicação usando essas credenciais. Este tópico descreve o uso da segurança de transporte no Windows Communication Foundation (WCF) com o recurso de representação. Para obter mais informações sobre a representação usando a segurança da mensagem, consulte Delegação e Representação.

Cinco Níveis de Representação

A segurança do transporte usa cinco níveis de representação, conforme descrito na tabela a seguir.

Nível de representação Descrição
Nenhum O aplicativo de servidor não tenta representar o cliente.
Anônima O aplicativo de servidor pode executar verificações de acesso em relação às credenciais do cliente, mas não recebe nenhuma informação sobre a identidade do cliente. Esse nível de representação é significativo apenas para a comunicação no computador, como pipes nomeados. Usar Anonymous com uma conexão remota promove o nível de representação para Identificar.
Identificar O aplicativo de servidor conhece a identidade do cliente e pode executar a validação de acesso em relação às credenciais do cliente, mas não pode representar o cliente. Identificar é o nível de representação padrão usado com credenciais de SSPI no WCF, a menos que o provedor de token forneça um nível de representação diferente.
Impersonate O aplicativo do servidor pode acessar recursos no computador do servidor como o cliente, além de executar verificações de acesso. O aplicativo do servidor não pode acessar recursos em computadores remotos usando a identidade do cliente porque o token representado não tem credenciais de rede
Delegar Além de ter os mesmos recursos que Impersonate, o nível de representação Delegado também permite que o aplicativo do servidor acesse recursos em computadores remotos usando a identidade do cliente e passe a identidade para outros aplicativos.

Importante A conta de domínio do servidor deve ser marcada como confiável para delegação no controlador de domínio para usar esses recursos adicionais. Esse nível de representação não pode ser usado com contas de domínio do cliente marcadas como confidenciais.

Os níveis mais comumente usados com segurança do transporte são Identify e Impersonate. Os níveis None e Anonymous não são recomendados para uso típico e muitos transportes não dão suporte ao uso desses níveis com autenticação. O nível Delegate é um recurso poderoso que deve ser usado com cuidado. Somente aplicativos de servidor confiáveis devem receber a permissão para delegar credenciais.

O uso da representação nos níveis Impersonate ou Delegate requer que o aplicativo do servidor tenha o privilégio SeImpersonatePrivilege. Um aplicativo tem esse privilégio por padrão se estiver em execução em uma conta no grupo de Administradores ou em uma conta com um SID de Serviço (Serviço de Rede, Serviço Local ou Sistema Local). A representação não requer autenticação mútua do cliente e do servidor. Alguns esquemas de autenticação que dão suporte à representação, como o NTLM, não podem ser usados com autenticação mútua.

Problemas específicos do transporte com representação

A escolha de um transporte no WCF afeta as possíveis opções de representação. Esta seção descreve os problemas que afetam o HTTP padrão e os transportes de pipe nomeados no WCF. Os transportes personalizados têm suas próprias restrições de suporte para representação.

Transporte de pipe nomeado

Os seguintes itens são usados com o transporte de pipe nomeado:

  • O transporte de pipe nomeado destina-se a ser usado somente no computador local. O transporte de pipe nomeado no WCF não permite explicitamente conexões entre computadores.

  • Os pipes nomeados não podem ser usados com o nível de representação Impersonate ou Delegate. O pipe nomeado não pode impor a garantia no computador nesses níveis de representação.

Para obter mais informações sobre pipes nomeados, consulte Como escolher um transporte.

Transporte HTTP

As associações que usam o transporte HTTP (WSHttpBinding e BasicHttpBinding) dão suporte a vários esquemas de autenticação, conforme explicado em Entendendo a autenticação HTTP. O nível de representação com suporte depende do esquema de autenticação. Os seguintes itens são usados com o transporte HTTP:

  • O esquema de autenticação Anonymous ignora a representação.

  • O esquema de autenticação Basic dá suporte apenas ao nível Delegate. Todos os níveis de representação inferiores são atualizados.

  • O esquema de autenticação Digest dá suporte apenas aos níveis Impersonate e Delegate.

  • O esquema de autenticação NTLM, selecionável diretamente ou por meio da negociação, dá suporte apenas ao nível Delegate no computador local.

  • O esquema de autenticação Kerberos, que só pode ser selecionado por meio da negociação, pode ser usado com qualquer nível de representação com suporte.

Para obter mais informações sobre o transporte HTTP, consulte Como escolher um transporte.

Confira também