Compartilhar via


Client Impersonation (em inglês)

A representação é útil em um ambiente de computação distribuída quando os servidores devem passar solicitações de cliente para outros processos de servidor ou para o sistema operacional. Nesse caso, um servidor representa o contexto de segurança do cliente. Outros processos de servidor podem manipular a solicitação como se o cliente original a tivesse feito.

O servidor representa um cliente de chamada ao fazer chamadas subsequentes em nome do cliente

Por exemplo, um cliente faz uma solicitação para o Servidor A. Se o Servidor A precisar consultar o Servidor B para concluir a solicitação, o Servidor A representará o contexto de segurança do cliente e fará a solicitação ao Servidor B em nome do cliente. O servidor B usa o contexto de segurança do cliente original, em vez da identidade de segurança do Servidor A, para determinar se a tarefa deve ser concluída.

O servidor chama RpcImpersonateClient para substituir a segurança do thread do servidor pelo contexto de segurança do cliente. Depois que a tarefa for concluída, o servidor chamará RpcRevertToSelf ou RpcRevertToSelfEx para restaurar o contexto de segurança definido para o thread do servidor.

Ao associar, o cliente pode especificar informações de qualidade de serviço sobre segurança que especificam como o servidor pode representar o cliente. Por exemplo, uma das configurações permite que o cliente especifique que o servidor não tem permissão para representá-lo. Para obter mais informações, consulte Qualidade de serviço.

A capacidade de chamar outros servidores ao representar o cliente original é chamada de delegação. Quando a delegação é usada, um servidor representando um cliente pode chamar outro servidor e pode fazer chamadas de rede com as credenciais do cliente. Ou seja, da perspectiva do segundo servidor, as solicitações provenientes do primeiro servidor são indistinguíveis de solicitações provenientes do cliente. Nem todos os provedores de segurança dão suporte à delegação. A Microsoft envia apenas um provedor de segurança que dá suporte à delegação: Kerberos.

A delegação pode ser uma funcionalidade perigosa devido aos privilégios que o cliente fornece ao servidor durante uma chamada de procedimento remoto. É por isso que o Kerberos permite chamadas com o nível de representação de delegação somente se a autenticação mútua for solicitada. Os administradores de domínio podem limitar os computadores aos quais as chamadas com nível de representação de delegação são feitas para impedir que clientes desavisados façam chamadas para servidores que possam abusar de suas credenciais.

Existe uma exceção à regra de delegação: chamadas usando ncalrpc. Quando essas chamadas são feitas, o servidor obtém direitos de delegação, mesmo que um nível de representação de representação seja especificado. Ou seja, um servidor pode chamar outros servidores em nome do cliente. Isso funciona apenas para uma chamada remota. Por exemplo, se o cliente A chamar o servidor local LB usando o servidor local ncalrpc , LB poderá representar e chamar o servidor remoto RB. O RB poderá agir em nome do cliente A, mas somente no computador remoto em que o RB está sendo executado. Ele não pode fazer outra chamada de rede para o computador remoto C, a menos que o LB tenha especificado um nível de representação de delegado quando ele chamou RB.

Observação

O termo representa dois significados sobrepostos. O primeiro significado da representação é o processo geral de agir em nome de um cliente. O segundo significado é o nível de representação específico chamado representação. O contexto do texto geralmente esclarece o significado.