Compartir a través de


función Msv1_0SubAuthenticationFilter (subauth.h)

La función Msv1_0SubAuthenticationFilter realiza la autenticación de inicio de sesión de usuario específica de los controladores de dominio.

La función recibe los datos de inicio de sesión del usuario y toda la información que se encuentra para el usuario en la base de datos administrador de cuentas de seguridad (SAM) del controlador de dominio.

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

Sintaxis

NTSTATUS Msv1_0SubAuthenticationFilter(
  [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 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 .

[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 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_0SubAuthenticationFilter devuelve éxito. 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 del miembro Parameters, Msv1_0SubAuthenticationFilter debe eliminar el búfer mediante la función MIDL_user_free y reasignarlo mediante la función MIDL_user_allocate.

[out] UserFlags

Valores que se van a devolver desde la función LsaLogonUser en el parámetro ProfileBuffer de esa función. Este parámetro puede ser uno de los valores siguientes.

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 del parámetro UserFlags .
 

[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. Este parámetro no se usa con el paquete de autenticación Kerberos.

[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 de Windows 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 sesión automáticamente, especifique un valor positivo grande, como se indica a continuación:

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 contraseña debe cambiar en el siguiente inicio de sesión.
STATUS_WRONG_PASSWORD
La contraseña no era válida.
 

Cuando se usa la función Msv1_0SubAuthenticationFilter con el paquete de autenticación Kerberos, si la llamada de función devuelve STATUS_SUCCESS y uno de los dos parámetros LogoffTime o KickoffTime tiene un valor distinto de cero, este valor se usa como vigencia del vale. Si, por otro lado, los valores de ambos parámetros son distintos de cero, se usa el menor de estos dos valores.

Si el valor que se usa para la duración del vale (cuanto antes logoffTime y KickoffTime) es mayor que la duración predeterminada del vale, ese valor se usará como tiempo de renovación máximo para el vale. Por el contrario, si el mayor de los dos valores (el posterior de LogoffTime y KickoffTime) es menor que la duración predeterminada del vale, este valor se usará como vigencia del vale. Para obtener más información, consulte Microsoft Kerberos.

Cuando se usa con el paquete de autenticación Kerberos, si esta función devuelve un error, el Centro de distribución de claves (KDC) devolverá el error Kerberos KDC_ERR_POLICY, con el valor de estado como código de error extendido.

Comentarios

Las implementaciones de esta función no deben ejecutar ninguna operación que provoque tráfico ligero del Protocolo de acceso a directorios (LDAP). Por ejemplo, no se conecte a y consulte la base de datos de Active Directory .

Una vez que el paquete de autenticación MSV1_0 o Kerberos haya validado un inicio de sesión, la función Msv1_0SubAuthenticationFilter puede realizar una validación adicional para determinar si un usuario puede iniciar sesión en una cuenta de red. Se llama a esta función si el archivo DLL del paquete de subautenticación se registra correctamente como "Auth0" en el registro del controlador de dominio. La ruta de acceso del Registro es diferente en función de si la función está en un MSV1_0 o en un archivo DLL de paquete de subautenticación Kerberos.

Esta rutina de filtro puede devolver STATUS_SUCCESS, lo que indica que el inicio de sesión debe continuar o un código de error, lo que indica que se produjo un error de validación adicional.

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