LSA_AP_LOGON_USER_EX2 función de devolución de llamada (ntsecpkg.h)

Se usa para autenticar un intento de inicio de sesión de usuario en el inicio de sesión inicial del usuario. Se establece una nueva sesión de inicio de sesión para el usuario y se devuelve la información de validación del usuario.

Sintaxis

LSA_AP_LOGON_USER_EX2 LsaApLogonUserEx2;

NTSTATUS LsaApLogonUserEx2(
  [in]  PLSA_CLIENT_REQUEST ClientRequest,
  [in]  SECURITY_LOGON_TYPE LogonType,
  [in]  PVOID ProtocolSubmitBuffer,
  [in]  PVOID ClientBufferBase,
  [in]  ULONG SubmitBufferSize,
  [out] PVOID *ProfileBuffer,
  [out] PULONG ProfileBufferSize,
  [out] PLUID LogonId,
  [out] PNTSTATUS SubStatus,
  [out] PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
  [out] PVOID *TokenInformation,
  [out] PUNICODE_STRING *AccountName,
  [out] PUNICODE_STRING *AuthenticatingAuthority,
  [out] PUNICODE_STRING *MachineName,
  [out] PSECPKG_PRIMARY_CRED PrimaryCredentials,
  [out] PSECPKG_SUPPLEMENTAL_CRED_ARRAY *SupplementalCredentials
)
{...}

Parámetros

[in] ClientRequest

Puntero a un LSA_CLIENT_REQUEST búfer opaco que representa la solicitud del cliente.

[in] LogonType

SECURITY_LOGON_TYPE valor que identifica el tipo de inicio de sesión.

[in] ProtocolSubmitBuffer

Búfer que proporciona la información de autenticación específica del paquete de autenticación.

[in] ClientBufferBase

Búfer que proporciona la dirección dentro del proceso de cliente en el que reside la información de autenticación. Esto puede ser necesario para corregir cualquier puntero dentro del búfer de información de autenticación.

[in] SubmitBufferSize

Valor de ULONG que indica el tamaño, en bytes, del búfer de información de autenticación.

[out] ProfileBuffer

Puntero que recibe la dirección del búfer de perfil en el proceso de cliente. El paquete de autenticación es responsable de asignar ProfileBuffer dentro del proceso de cliente mediante una llamada a la función AllocateClientBuffer . Sin embargo, si el LSA encuentra posteriormente un error que impide un inicio de sesión correcto, el LSA se encargará de liberar este búfer.

El paquete de autenticación determina el contenido de este búfer. El LSA no modifica este búfer; simplemente devuelve el valor a la función LsaLogonUser .

[out] ProfileBufferSize

Puntero a un ULONG que recibe el tamaño del búfer ProfileBuffer .

[out] LogonId

Puntero a una variable LUID que recibe el nuevo identificador de inicio de sesión que identifica de forma única esta sesión de inicio de sesión. El paquete de autenticación es responsable de asignar este LUID y de crear la sesión de inicio de sesión de LSA para este inicio de sesión.

[out] SubStatus

Puntero a un NTSTATUS que recibe el motivo de los errores debido a restricciones de cuenta. El paquete de autenticación determina los valores devueltos en SubStatus .

En la tabla siguiente se enumeran los valores de SubStatus para los paquetes de autenticación MSV1_0 y Kerberos.

Valor Significado
STATUS_INVALID_LOGON_HOURS
La cuenta de usuario tiene restricciones de tiempo; no se puede usar para iniciar sesión en este momento.
STATUS_INVALID_WORKSTATION
La cuenta de usuario tiene restricciones de estación de trabajo; no se puede usar para iniciar sesión en la estación de trabajo actual.
STATUS_PASSWORD_EXPIRED
La contraseña de la cuenta de usuario ha expirado.
STATUS_ACCOUNT_DISABLED
La cuenta de usuario está deshabilitada actualmente y no se puede usar para iniciar sesión.
 

Puede encontrar más información sobre los códigos NTSTATUS en el archivo de encabezado Subauth.h incluido con platform SDK.

La función LsaNtStatusToWinError convierte un código NTSTATUS en un código de error de Windows.

[out] TokenInformationType

Puntero que recibe la dirección de un valor de LSA_TOKEN_INFORMATION_TYPE que indica el tipo de información devuelta para su inclusión en el token que se va a crear. La información se devuelve mediante el parámetro TokenInformation .

[out] TokenInformation

Puntero que recibe la dirección de información que se va a incluir en el token. El formato y el contenido de TokenInformation se indican mediante el parámetro TokenInformationType . El paquete de autenticación es responsable de asignar la memoria utilizada por TokenInformation; sin embargo, la LSA liberará esta memoria.

[out] AccountName

Puntero a una estructura de LSA_UNICODE_STRING que recibe el nombre de la cuenta de usuario. AccountName siempre debe devolverse independientemente del éxito o error de la llamada; su cadena se incluye en el registro de auditoría para un intento de autenticación. El paquete de autenticación es responsable de asignar la memoria utilizada por AccountName; sin embargo, la LSA liberará esta memoria.

[out] AuthenticatingAuthority

Opcional. Puntero a una estructura de LSA_UNICODE_STRING que recibe la descripción de la autoridad de autenticación para el inicio de sesión. Este parámetro puede ser NULL. Esta cadena se incluye en el registro de auditoría para un intento de autenticación. El paquete de autenticación es responsable de asignar la memoria utilizada por AuthenticatingAuthority; sin embargo, la LSA liberará esta memoria.

El paquete de autenticación MSV1_0 devuelve el nombre de dominio del dominio que valida la cuenta. El paquete de autenticación Kerberos devuelve el nombre de dominio NetBIOS.

[out] MachineName

Opcional. Puntero que recibe la dirección de una estructura de UNICODE_STRING que contiene el nombre del equipo del cliente. Esta cadena puede omitirse opcionalmente. Esta cadena se incluye en el registro de auditoría para este intento de autenticación. El paquete de autenticación es responsable de asignar la memoria utilizada por MachineName; sin embargo, la LSA liberará esta memoria.

El paquete de autenticación MSV1_0 devuelve el nombre NetBIOS de la estación de trabajo del cliente.

[out] PrimaryCredentials

Puntero a una estructura de SECPKG_PRIMARY_CRED que devuelve las credenciales principales para entregar a otros paquetes.

[out] SupplementalCredentials

Puntero a una matriz SECPKG_SUPPLEMENTAL_CRED_ARRAY de credenciales complementarias para otros paquetes.

Valor devuelto

Si la función se realiza correctamente, debe devolver STATUS_SUCCESS.

De lo contrario, debe devolver un código de error NTSTATUS, que puede ser uno de los siguientes valores o uno de los valores devueltos de la función de directiva LSA.

Código devuelto Descripción
STATUS_QUOTA_EXCEEDED
No se pudo completar el inicio de sesión porque la cuota de memoria del cliente no es suficiente para asignar el búfer de devolución.
STATUS_NO_LOGON_SERVERS
No hay controladores de dominio disponibles para atender la solicitud de autenticación.
STATUS_LOGON_FAILURE
Error en el intento de inicio de sesión. No se especifica el motivo del error; Entre los motivos típicos se incluyen los nombres de usuario y las contraseñas mal escritos.
STATUS_ACCOUNT_RESTRICTION
La cuenta de usuario y la contraseña eran legítimas, pero las restricciones de la cuenta de usuario impiden el inicio de sesión correcto en este momento. Para obtener más información, consulte el parámetro SubStatus .
STATUS_BAD_VALIDATION_CLASS
El paquete de autenticación no reconoce la información de autenticación proporcionada.
STATUS_INVALID_LOGON_TYPE
LogonType no era válido.
STATUS_LOGON_SESSION_COLLISION
El identificador de inicio de sesión seleccionado para esta sesión de inicio de sesión (en el parámetro LogonId ) ya existe.
STATUS_NETLOGON_NOT_STARTED
Se requiere la base de datos SAM o el servicio Netlogon, pero no está disponible.
STATUS_NO_MEMORY
Las cuotas de memoria virtual o archivo de página del cliente no son suficientes para asignar el búfer de retorno.
 

Las aplicaciones que llaman pueden usar la función LsaNtStatusToWinError para convertir el código NTSTATUS en un código de error de Windows.

Comentarios

Los paquetes de autenticación deben implementar una de las siguientes funciones: LsaApLogonUser, LsaApLogonUserEx o LsaApLogonUserEx2.

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 ntsecpkg.h

Consulte también

LSA_CLIENT_REQUEST

LSA_TOKEN_INFORMATION_TYPE

LSA_UNICODE_STRING

LsaApLogonUser

LsaApLogonUserEx

LsaCallAuthenticationPackage