Función AcquireCredentialsHandle (CredSSP)
La función AcquireCredentialsHandle (CredSSP) adquiere un identificador para las credenciales preexistentes de una entidad de seguridad. Este identificador lo requieren las funciones InitializeSecurityContext (CredSSP) y AcceptSecurityContext (CredSSP). Estas pueden ser credenciales preexistentes, que se establecen a través de un inicio de sesión del sistema que no se describe aquí, o el autor de la llamada puede proporcionar credenciales alternativas.
Nota
Esto no es un "inicio de sesión en la red" y no implica la recopilación de credenciales.
Sintaxis
SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandle(
_In_opt_ SEC_CHAR *pszPrincipal,
_In_ SEC_CHAR *pszPackage,
_In_ unsigned long fCredentialUse,
_In_opt_ void *pvLogonID,
_In_opt_ void *pAuthData,
_In_opt_ SEC_GET_KEY_FN pGetKeyFn,
_Reserved_ void *pvGetKeyArgument,
_Out_ PCredHandle phCredential,
_Out_opt_ PTimeStamp ptsExpiry
);
Parámetros
pszPrincipal [in, optional]
Puntero a una cadena terminada en null que especifica el nombre de la entidad de seguridad cuyas credenciales hará referencia el identificador.
Nota
Si el proceso que solicita el identificador no tiene acceso a las credenciales, la función devuelve un error. Una cadena null indica que el proceso requiere un identificador para las credenciales del usuario en cuyo contexto de seguridad se está ejecutando.
pszPackage [in]
Puntero a una cadena terminada en null que especifica el nombre del paquete de seguridad con el que se usarán estas credenciales. Se trata de un nombre de paquete de seguridad devuelto en el miembro Name de una estructura SecPkgInfo devuelta por la función EnumerateSecurityPackages . Una vez establecido un contexto, se puede llamar a QueryContextAttributes (CredSSP) con ulAttribute establecido en SECPKG_ATTR_PACKAGE_INFO para devolver información sobre el paquete de seguridad en uso.
fCredentialUse [in]
Marca que indica cómo se usarán estas credenciales. Este parámetro puede ser uno de los valores siguientes.
Valor | Significado |
---|---|
SECPKG_CRED_INBOUND 0x1 |
Valide una credencial de servidor entrante. Las credenciales entrantes se pueden validar mediante una entidad de autenticación cuando se llama a InitializeSecurityContext (CredSSP) o AcceptSecurityContext (CredSSP). Si dicha autoridad no está disponible, se producirá un error en la función y se devolverá SEC_E_NO_AUTHENTICATING_AUTHORITY. La validación es específica del paquete |
SECPKG_CRED_OUTBOUND 0x0 |
Permitir que una credencial de cliente local prepare un token saliente. |
pvLogonId [in, optional]
Puntero a un identificador único local (LUID) que identifica al usuario. Este parámetro se proporciona para los procesos del sistema de archivos, como los redireccionadores de red. Este parámetro puede ser NULL.
pAuthData [in, opcional]
Puntero a una estructura de CREDSSP_CRED que especifica los datos de autenticación para los paquetes Schannel y Negotiate.
pGetKeyFn [in, optional]
Reservado. Este parámetro no se usa y debe establecerse en NULL.
pvGetKeyArgument [in, optional]
Reservado. Este parámetro debe establecerse en NULL.
phCredential [out]
Puntero a la estructura CredHandle que recibirá el identificador de credencial.
ptsExpiry [out, optional]
Puntero a una estructura TimeStamp que recibe la hora en la que expiran las credenciales devueltas. El valor de estructura recibido depende del paquete de seguridad, que debe especificar el valor en la hora local.
Valor devuelto
Si la función se ejecuta correctamente, devuelve SEC_E_OK.
Si se produce un error en la función, devuelve uno de los siguientes códigos de error.
Código devuelto | Descripción |
---|---|
SEC_E_INSUFFICIENT_MEMORY | No hay memoria suficiente disponible para completar la acción solicitada. |
SEC_E_INTERNAL_ERROR | Error que no se asignación a un código de error de SSPI. |
SEC_E_NO_CREDENTIALS | No hay credenciales disponibles en el paquete de seguridad. |
SEC_E_NOT_OWNER | El autor de la llamada de la función no tiene las credenciales necesarias. |
SEC_E_SECPKG_NOT_FOUND | El paquete de seguridad solicitado no existe. |
SEC_E_UNKNOWN_CREDENTIALS | No se han reconocido las credenciales proporcionadas al paquete. |
Comentarios
La función AcquireCredentialsHandle (CredSSP) devuelve un identificador a las credenciales de una entidad de seguridad, como un usuario o cliente, tal como lo usa un paquete de seguridad específico. La función puede devolver el identificador a las credenciales preexistentes o a las credenciales recién creadas y devolverla. Este identificador se puede usar en llamadas posteriores a las funciones AcceptSecurityContext (CredSSP) e InitializeSecurityContext (CredSSP).
En general, AcquireCredentialsHandle (CredSSP) no proporciona las credenciales de otros usuarios que han iniciado sesión en el mismo equipo. Sin embargo, un llamador con privilegios SE_TCB_NAME puede obtener las credenciales de una sesión de inicio de sesión existente especificando el identificador de inicio de sesión (LUID) de esa sesión. Normalmente, los módulos en modo kernel lo usan los módulos que deben actuar en nombre de un usuario que ha iniciado sesión.
Un paquete puede llamar a la función en pGetKeyFn proporcionada por el transporte en tiempo de ejecución rpc. Si el transporte no admite la noción de devolución de llamada para recuperar credenciales, este parámetro debe ser NULL.
En el caso de los autores de llamadas en modo kernel, deben tenerse en cuenta las siguientes diferencias:
- Los dos parámetros de cadena deben ser cadenas Unicode .
- Los valores de búfer deben asignarse en la memoria virtual del proceso, no desde el grupo.
Cuando haya terminado de usar las credenciales devueltas, libere la memoria usada por las credenciales llamando a la función FreeCredentialsHandle .
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 [solo aplicaciones de escritorio] |
Encabezado | Sspi.h (incluya Security.h) |
Biblioteca | Secur32.lib |
Archivo DLL | Secur32.dll |
Nombres Unicode y ANSI | AcquireCredentialsHandleW (Unicode) y AcquireCredentialsHandleA (ANSI) |