Función ImpersonateLoggedOnUser (securitybaseapi.h)
La función ImpersonateLoggedOnUser permite al subproceso de llamada suplantar el contexto de seguridad de un usuario que ha iniciado sesión. El usuario se representa mediante un identificador de token.
Sintaxis
BOOL ImpersonateLoggedOnUser(
[in] HANDLE hToken
);
Parámetros
[in] hToken
Identificador de un token de acceso principal o suplantación que representa un usuario que ha iniciado sesión. Puede ser un identificador de token devuelto por una llamada a las funciones LogonUser, CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken o OpenThreadToken . Si hToken es un identificador de un token principal, el token debe tener TOKEN_QUERY y TOKEN_DUPLICATE acceso. Si hToken es un identificador de un token de suplantación, el token debe tener TOKEN_QUERY y TOKEN_IMPERSONATE acceso.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es distinto de cero.
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Comentarios
La suplantación dura hasta que el subproceso sale o hasta que llama a RevertToSelf.
El subproceso de llamada no necesita tener privilegios concretos para llamar a ImpersonateLoggedOnUser.
Si se produce un error en la llamada a ImpersonateLoggedOnUser , la conexión de cliente no se suplanta y la solicitud de cliente se realiza en el contexto de seguridad del proceso. Si el proceso se ejecuta como una cuenta con privilegios elevados, como LocalSystem o como miembro de un grupo administrativo, es posible que el usuario pueda realizar acciones que, de lo contrario, no se les permita. Por lo tanto, es importante comprobar siempre el valor devuelto de la llamada y, si se produce un error, generar un error; no continúe la ejecución de la solicitud de cliente.
Todas las funciones de suplantación, incluidas ImpersonateLoggedOnUser , permiten la suplantación solicitada si se cumple una de las siguientes condiciones:
- El nivel de suplantación solicitado del token es menor que SecurityImpersonation, como SecurityIdentification o SecurityAnonymous.
- El autor de la llamada tiene el privilegio SeImpersonatePrivilege .
- Un proceso (u otro proceso en la sesión de inicio de sesión del autor de la llamada) creó el token mediante credenciales explícitas a través de la función LogonUser o LsaLogonUser .
- La identidad autenticada es la misma que el autor de la llamada.
Para obtener más información sobre la suplantación, consulte Suplantación de cliente.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | securitybaseapi.h (incluya Windows.h) |
Library | Advapi32.lib |
Archivo DLL | Advapi32.dll |
Consulte también
Funciones de cliente/servidor Access Control