función Msv1_0SubAuthenticationRoutine (subauth.h)

La función Msv1_0SubAuthenticationRoutine realiza la autenticación específica del cliente o servidor.

Las credenciales e información de la entidad de seguridad de la base de datos administrador de cuentas de seguridad (SAM) se pasan a esta función para la autenticación.

Esta función se implementa mediante archivos DLL de paquetes de subautenticación personalizados para su uso con el paquete de autenticación MSV1_0.

Solo se llama a la función Msv1_0SubAuthenticationRoutine para una autenticación no interactiva, solo en el servidor de autenticación donde reside la cuenta y solo si un archivo DLL de subautenticación está registrado bajo la clave correcta en el Registro.

Nota El paquete de autenticación Kerberos no llama a esta rutina.
 

Sintaxis

NTSTATUS Msv1_0SubAuthenticationRoutine(
  [in]  NETLOGON_LOGON_INFO_CLASS LogonLevel,
  [in]  PVOID                     LogonInformation,
  [in]  ULONG                     Flags,
  [in]  PUSER_ALL_INFORMATION     UserAll,
  [out] PULONG                    WhichFields,
  [out] PULONG                    UserFlags,
  [out] PBOOLEAN                  Authoritative,
  [out] PLARGE_INTEGER            LogoffTime,
  [out] PLARGE_INTEGER            KickoffTime
);

Parámetros

[in] LogonLevel

Especifica el nivel de información proporcionado en el parámetro LogonInformation . Este parámetro se establece normalmente en NetlogonInteractiveInformation.

[in] LogonInformation

Puntero a una estructura de NETLOGON_LOGON_IDENTITY_INFO . Los miembros de esta estructura contienen información sobre el usuario que inicia sesión. Se omite el miembro LogonDomainName de esta estructura.

[in] Flags

Opcional. Contiene marcas que describen las circunstancias del inicio de sesión. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
MSV1_0_PASSTHRU
Autenticación de paso a través. El usuario no se conecta a esta máquina.
MSV1_0_GUEST_LOGON
Se trata de un reintento del inicio de sesión mediante la cuenta de usuario INVITADO.

[in] UserAll

Puntero a una estructura de USER_ALL_INFORMATION que contiene la descripción del usuario tal como se devuelve de la base de datos SAM.

[out] WhichFields

Devuelve los miembros de la estructura USER_ALL_INFORMATION que deben escribirse en la base de datos SAM. Estos miembros solo se escribirán si Msv1_0SubAuthenticationRoutine devuelve éxito al autor de la llamada. Solo el valor siguiente es válido.

Valor Significado
USER_ALL_PARAMETERS
Escriba los datos contenidos en el miembro Parameters de la estructura UserAll en la base de datos SAM.

Si se cambia el tamaño del búfer de UNICODE_STRING miembro Parameters , Msv1_0SubAuthenticationRoutine debe eliminar el búfer mediante la función MIDL_user_free y reasignarlo mediante la función MIDL_user_allocate .

[out] UserFlags

Los valores que se van a devolver desde el parámetro ProfileBuffer de la función LsaLogonUser, cuando contiene una estructura MSV1_0_LM20_LOGON_PROFILE. Los siguientes valores se definen actualmente para el miembro UserFlags de la estructura.

Valor Significado
LOGON_GUEST
Se trata de un inicio de sesión de invitado.
LOGON_NOENCRYPTION
El autor de la llamada no ha especificado credenciales cifradas.
 
Nota Por convención, los paquetes de subautenticación devuelven bits solo en el byte de orden alto de UserFlags; sin embargo, esta convención no se aplica.
 

[out] Authoritative

Puntero a un valor booleano que indica si el estado devuelto es un estado autoritativo que se debe devolver al autor de la llamada original. Si el valor devuelto es FALSE, la solicitud de inicio de sesión se puede volver a intentar en otro controlador de dominio. Este parámetro debe devolver información válida independientemente del valor devuelto de la llamada de función.

[out] LogoffTime

Puntero a un valor que recibe la hora en la que el usuario debe cerrar sesión en el sistema. Esta vez se usa para controlar la duración del inicio de sesión y se especifica como una hora del sistema relativa a GMT.

[out] KickoffTime

Puntero a un valor que recibe la hora en la que el usuario debe cerrar la sesión del sistema. Esta vez se usa para controlar la duración del inicio de sesión y se especifica como una hora del sistema relativa a GMT. Si el usuario no se va a cerrar la sesión, especifique un valor positivo grande, como:

KickoffTime->HighPart = 0x7FFFFFFF;
KickoffTime->LowPart = 0xFFFFFFFF;

Valor devuelto

Esta función debe devolver uno de los valores siguientes.

Código devuelto Descripción
STATUS_SUCCESS
No se produjo ningún error.
STATUS_ACCOUNT_DISABLED
La cuenta está deshabilitada.
STATUS_ACCOUNT_EXPIRED
La cuenta ha expirado.
STATUS_ACCOUNT_LOCKED_OUT
Se ha bloqueado la cuenta.
STATUS_INVALID_INFO_CLASS
LogonLevel no es válido.
STATUS_INVALID_LOGON_HOURS
El usuario no está autorizado para iniciar sesión en este momento.
STATUS_INVALID_WORKSTATION
El usuario no está autorizado para iniciar sesión en la estación de trabajo especificada.
STATUS_NO_SUCH_USER
El usuario especificado no tiene ninguna cuenta.
STATUS_PASSWORD_EXPIRED
La contraseña ha expirado.
STATUS_PASSWORD_MUST_CHANGE
La cuenta está marcada para indicar que la contraseña debe cambiarse en el siguiente inicio de sesión.
STATUS_WRONG_PASSWORD
La contraseña no era válida.

Comentarios

El paquete de autenticación de MSV1_0 llama a esta función si parte del parámetro AuthenticationInformation indica que se va a realizar la subautenticación y si se va a realizar una DLL de subautenticación que exporta la función Msv1_0SubAuthenticationRoutine está registrada correctamente en la estación de trabajo.

El paquete de autenticación MSV1_0 no admite la subautenticación para inicios de sesión interactivos, que requieren la estructura de MSV1_0_INTERACTIVE_LOGON . Los inicios de sesión de red, que requieren la estructura MSV1_0_LM20_LOGON , pueden usar la subautenticación.

Se llama a la función Msv1_0SubAuthenticationRoutine después de que se haya localizado el controlador de dominio correcto y se haya recuperado toda la información sobre la entidad de seguridad que se va a autenticar de la base de datos SAM. Cuando se usa la subautenticación, la autenticación es responsabilidad del archivo DLL de subautenticación y debe realizarse mediante la función Msv1_0SubAuthenticationRoutine exportada por ese archivo DLL.

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