Partager via


Msv1_0SubAuthenticationFilter fonction (subauth.h)

La fonction Msv1_0SubAuthenticationFilter effectue une authentification d’ouverture de session utilisateur spécifique aux contrôleurs de domaine.

La fonction reçoit les données d’ouverture de session de l’utilisateur et toutes les informations trouvées pour l’utilisateur dans la base de données du Gestionnaire des comptes de sécurité (SAM) du contrôleur de domaine.

Cette fonction est implémentée par des DLL de package de sous-authentification personnalisées à utiliser avec les packages d’authentification Kerberos et MSV1_0.

Syntaxe

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
);

Paramètres

[in] LogonLevel

Spécifie le niveau d’informations fournies dans LogonInformation. Ce paramètre est normalement défini sur NetlogonInteractiveInformation.

[in] LogonInformation

Pointeur vers une structure NETLOGON_LOGON_IDENTITY_INFO . Les membres de cette structure contiennent des informations sur l’utilisateur qui se connecte. Le membre LogonDomainName est ignoré.

[in] Flags

facultatif. Contient des indicateurs qui décrivent les circonstances de l’ouverture de session. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
MSV1_0_PASSTHRU
Authentification directe. L’utilisateur ne se connecte pas à cet ordinateur.
MSV1_0_GUEST_LOGON
Il s’agit d’une nouvelle tentative d’ouverture de session à l’aide du compte Invité.

[in] UserAll

Pointeur vers une structure de USER_ALL_INFORMATION qui contient la description de l’utilisateur telle qu’elle est retournée à partir de la base de données SAM.

[out] WhichFields

Retourne les membres de la structure USER_ALL_INFORMATION qui doivent être réécrits dans la base de données SAM. Ces membres ne seront écrits que si Msv1_0SubAuthenticationFilter retourne la réussite. Seule la valeur suivante est valide.

Valeur Signification
USER_ALL_PARAMETERS
Réécrivez les données contenues dans le membre Parameters de la structure UserAll dans la base de données SAM.

Si la taille de la mémoire tampon UNICODE_STRING du membre Parameters est modifiée, Msv1_0SubAuthenticationFilter devez supprimer la mémoire tampon à l’aide de la fonction MIDL_user_free et la réallouer à l’aide de la fonction MIDL_user_allocate.

[out] UserFlags

Valeurs à retourner à partir de la fonction LsaLogonUser dans le paramètre ProfileBuffer de cette fonction. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
LOGON_GUEST
Il s’agissait d’une ouverture de session d’invité.
LOGON_NOENCRYPTION
L’appelant n’a pas spécifié d’informations d’identification chiffrées.
 
Note Par convention, les packages de sous-authentification retournent uniquement les bits dans l’octet d’ordre élevé du paramètre UserFlags .
 

[out] Authoritative

Pointeur vers une valeur booléenne qui indique si le status retourné est un status faisant autorité qui doit être retourné à l’appelant d’origine. Si la valeur retournée est FALSE, la demande d’ouverture de session peut être réessayé sur un autre contrôleur de domaine. Ce paramètre doit retourner des informations valides, quelle que soit la valeur de retour de l’appel de fonction. Ce paramètre n’est pas utilisé avec le package d’authentification Kerberos.

[out] LogoffTime

Pointeur vers une valeur qui reçoit l’heure à laquelle l’utilisateur doit se déconnecter du système. Cette heure est utilisée pour contrôler la durée de vie de l’ouverture de session et est spécifiée sous la forme d’une heure système Windows relative GMT.

[out] KickoffTime

Pointeur vers une valeur qui reçoit l’heure à laquelle l’utilisateur doit être déconnecté du système. Cette heure est utilisée pour contrôler la durée de vie de l’ouverture de session et est spécifiée sous la forme d’une heure système relative GMT. Si l’utilisateur ne doit pas être automatiquement déconnecté, spécifiez une grande valeur positive, comme suit :

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

Valeur retournée

Cette fonction doit retourner l’une des valeurs suivantes.

Code de retour Description
STATUS_SUCCESS
Il n’y a pas eu d’erreur.
STATUS_ACCOUNT_DISABLED
Le compte est désactivé.
STATUS_ACCOUNT_EXPIRED
Le compte a expiré.
STATUS_ACCOUNT_LOCKED_OUT
Le compte est verrouillé.
STATUS_INVALID_INFO_CLASS
LogonLevel n’est pas valide.
STATUS_INVALID_LOGON_HOURS
L’utilisateur n’est pas autorisé à se connecter pour le moment.
STATUS_INVALID_WORKSTATION
L’utilisateur n’est pas autorisé à se connecter à la station de travail spécifiée.
STATUS_NO_SUCH_USER
L’utilisateur spécifié n’a pas de compte.
STATUS_PASSWORD_EXPIRED
Le mot de passe a expiré.
STATUS_PASSWORD_MUST_CHANGE
Le mot de passe doit changer lors de la prochaine ouverture de session.
STATUS_WRONG_PASSWORD
Le mot de passe n’était pas valide.
 

Lorsque la fonction Msv1_0SubAuthenticationFilter est utilisée avec le package d’authentification Kerberos, si l’appel de fonction retourne STATUS_SUCCESS et que l’un des deux paramètres LogoffTime ou KickoffTime a une valeur différente de zéro, cette valeur est utilisée comme durée de vie du ticket. Si, en revanche, les valeurs des deux paramètres ne sont pas nulles, la plus petite de ces deux valeurs est utilisée.

Si la valeur utilisée pour la durée de vie du ticket (la plus précoce de LogoffTime et KickoffTime) est supérieure à la durée de vie du ticket par défaut, cette valeur sera utilisée comme durée de renouvellement maximale pour le ticket. À l’inverse, si la plus grande des deux valeurs (la plus récente de LogoffTime et KickoffTime) est inférieure à la durée de vie du ticket par défaut, cette valeur sera utilisée comme durée de vie du ticket. Pour plus d’informations, consultez Microsoft Kerberos.

Lorsqu’elle est utilisée avec le package d’authentification Kerberos, si cette fonction retourne une erreur, le centre de distribution de clés (KDC) retourne le KDC_ERR_POLICY d’erreur Kerberos, avec la valeur status comme code d’erreur étendu.

Remarques

Les implémentations de cette fonction ne doivent pas exécuter d’opérations qui provoquent le trafic LDAP ( Lightweight Directory Access Protocol ). Par exemple, ne vous connectez pas à la base de données Active Directory et n’interrogez pas la base de données Active Directory .

Une fois que le package d’authentification MSV1_0 ou Kerberos a validé une ouverture de session, la fonction Msv1_0SubAuthenticationFilter peut effectuer une validation supplémentaire pour déterminer si un utilisateur peut se connecter à un compte réseau. Cette fonction est appelée si la DLL de package de sous-authentification est correctement inscrite comme « Auth0 » dans le registre du contrôleur de domaine. Le chemin du Registre est différent selon que la fonction se trouve dans une DLL de package de sous-authentification kerberos ou MSV1_0.

Cette routine de filtre peut retourner STATUS_SUCCESS, ce qui indique que l’ouverture de session doit continuer, ou un code d’échec, qui indique que la validation supplémentaire a échoué.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête subauth.h