Função ImpersonateSecurityContext (sspi.h)
A função ImpersonateSecurityContext permite que um servidor represente um cliente usando um token obtido anteriormente por uma chamada para AcceptSecurityContext (Geral) ou QuerySecurityContextToken. Essa função permite que o servidor de aplicativos atue como o cliente e, portanto, todos os controles de acesso necessários são impostos.
Sintaxe
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY ImpersonateSecurityContext(
[in] PCtxtHandle phContext
);
Parâmetros
[in] phContext
O identificador do contexto a ser representado. Esse identificador deve ter sido obtido por uma chamada para a função AcceptSecurityContext (Geral ).
Valor retornado
Se a função for bem-sucedida, a função retornará SEC_E_OK.
Se a função falhar, ela retornará o código de erro a seguir.
Código de retorno | Descrição |
---|---|
|
O identificador passado para a função não é válido. |
|
Não foi possível representar o cliente. |
|
Esse valor é retornado pelo modo kernel Schannel para indicar que essa função não tem suporte. |
Comentários
O aplicativo de servidor chama a função ImpersonateSecurityContext quando precisa representar o cliente. Antes de fazer isso, o servidor deve ter obtido um identificador de contexto válido. Para obter o identificador de contexto, o servidor deve chamar AcceptSecurityContext (Geral) para enviar o token de segurança de entrada do cliente para o sistema de segurança. O servidor obterá um identificador de contexto se o contexto de entrada for validado. A função cria um token de representação e permite que o thread ou processo seja executado com o contexto de representação.
Ao usar o SSP ( provedor de suporte de segurança ) do Schannel, o aplicativo de servidor deve passar o sinalizador ASC_REQ_MUTUAL_AUTH ao chamar AcceptSecurityContext (Geral). Isso garante que o cliente seja solicitado a fornecer um certificado de cliente durante o handshake SSL/TLS. Quando um certificado de cliente é recebido, o pacote Schannel verifica o certificado do cliente e tenta mapeá-lo para uma conta de usuário. Quando esse mapeamento é bem-sucedido, um token de usuário cliente é criado e essa função é bem-sucedida.
O servidor de aplicativos deve chamar a função RevertSecurityContext quando for concluída ou quando precisar restaurar seu próprio contexto de segurança.
ImpersonateSecurityContext não está disponível com todos os pacotes de segurança em todas as plataformas. Normalmente, ele é implementado apenas em plataformas e com pacotes de segurança que dão suporte à representação. Para saber se um pacote de segurança dá suporte à representação, chame a função QuerySecurityPackageInfo .
- O nível de representação solicitado do token é menor que SecurityImpersonation, como SecurityIdentification ou SecurityAnonymous.
- O chamador tem o privilégio SeImpersonatePrivilege .
- Um processo (ou outro processo na sessão de logon do chamador) criou o token usando credenciais explícitas por meio da função LogonUser ou LsaLogonUser .
- A identidade autenticada é a mesma que o chamador.
Windows XP: O privilégio SeImpersonatePrivilege não tem suporte até o Windows XP com Service Pack 2 (SP2).
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | sspi.h (inclua Security.h) |
Biblioteca | Secur32.lib |
DLL | Secur32.dll |