Compartilhar via


Método IServerSecurity::ImpersonateClient (objidl.h)

Permite que um servidor represente um cliente durante uma chamada.

Sintaxe

HRESULT ImpersonateClient();

Retornar valor

Se o método for bem-sucedido, o valor retornado será S_OK. Caso contrário, será E_FAIL.

Comentários

Normalmente, um método é executado em um thread que usa o token de acesso do processo. No entanto, ao representar um cliente, o servidor é executado no contexto de segurança do cliente para que o servidor tenha acesso aos recursos aos quais o cliente tem acesso. Quando a representação é necessária, o servidor chama o método ImpersonateClient para fazer com que um token de acesso que representa as credenciais do cliente seja atribuído ao thread atual. Esse token de thread é usado para verificações de acesso. RevertToSelf restaura o token de acesso do thread atual.

O que o servidor pode fazer em nome do cliente depende do nível de representação definido pelo cliente, que é especificado usando uma das constantes de nível de representação. O servidor pode representar o cliente em uma chamada criptografada no nível de identificação, representação ou delegado. Para obter informações sobre esses níveis de representação, consulte Níveis de representação.

A identidade apresentada a um servidor chamado durante a representação depende do tipo de valor de camuflagem, se houver, definido pelo cliente. Para obter mais informações, confira Cloaking.

No final de cada chamada de método, COM chamará RevertToSelf se o aplicativo não o fizer.

Tradicionalmente, as informações de representação não são aninhadas: a última chamada para qualquer mecanismo de representação substitui qualquer representação anterior. No entanto, no modelo de apartamento, a representação é mantida durante chamadas aninhadas. Portanto, se o servidor A receber uma chamada de B, representar, chamar C, receber uma chamada de D, representar, reverter e receber a resposta de C, o token de representação será definido de volta para B, não A.

Para obter informações sobre como usar a representação com chamadas assíncronas, consulte Representação e Chamadas Assíncronas.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objidl.h (inclua ObjIdl.h)

Confira também

CoImpersonateClient

Iserversecurity