Función ImpersonateSecurityContext (sspi.h)
La función ImpersonateSecurityContext permite a un servidor suplantar a un cliente mediante un token obtenido previamente por una llamada a AcceptSecurityContext (General) o QuerySecurityContextToken. Esta función permite que el servidor de aplicaciones actúe como cliente y, por tanto, se aplican todos los controles de acceso necesarios.
Sintaxis
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY ImpersonateSecurityContext(
[in] PCtxtHandle phContext
);
Parámetros
[in] phContext
Identificador del contexto que se va a suplantar. Este identificador debe haberse obtenido mediante una llamada a la función AcceptSecurityContext (General).
Valor devuelto
Si la función se ejecuta correctamente, la función devuelve SEC_E_OK.
Si se produce un error en la función, devuelve el código de error siguiente.
Código devuelto | Descripción |
---|---|
|
El identificador pasado a la función no es válido. |
|
No se pudo suplantar al cliente. |
|
El modo kernel de Schannel devuelve este valor para indicar que esta función no es compatible. |
Comentarios
La aplicación de servidor llama a la función ImpersonateSecurityContext cuando necesita suplantar al cliente. Antes de hacerlo, el servidor debe haber obtenido un identificador de contexto válido. Para obtener el identificador de contexto, el servidor debe llamar a AcceptSecurityContext (General) para enviar el token de seguridad entrante del cliente al sistema de seguridad. El servidor obtiene un identificador de contexto si se valida el contexto de entrada. La función crea un token de suplantación y permite que el subproceso o el proceso se ejecuten con el contexto de suplantación.
Cuando se usa el proveedor de compatibilidad de seguridad de Schannel (SSP), la aplicación de servidor debe pasar la marca de ASC_REQ_MUTUAL_AUTH al llamar a AcceptSecurityContext (General). Esto garantiza que el cliente se solicite un certificado de cliente durante el protocolo de enlace SSL/TLS. Cuando se recibe un certificado de cliente, el paquete Schannel comprueba el certificado de cliente e intenta asignarlo a una cuenta de usuario. Cuando esta asignación se realiza correctamente, se crea un token de usuario cliente y esta función se realiza correctamente.
El servidor de aplicaciones debe llamar a la función RevertSecurityContext cuando termine o cuando necesite restaurar su propio contexto de seguridad.
ImpersonateSecurityContext no está disponible con todos los paquetes de seguridad en todas las plataformas. Normalmente, solo se implementa en plataformas y con paquetes de seguridad que admiten la suplantación. Para saber si un paquete de seguridad admite la suplantación, llame a la función QuerySecurityPackageInfo .
- 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.
Windows XP: El privilegio SeImpersonatePrivilege no se admite hasta Windows XP con Service Pack 2 (SP2).
Requisitos
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 | sspi.h (include Security.h) |
Library | Secur32.lib |
Archivo DLL | Secur32.dll |