fonction Msv1_0SubAuthenticationRoutine (subauth.h)

La fonction Msv1_0SubAuthenticationRoutine effectue une authentification spécifique au client/serveur.

Les informations d’identification et les informations d’identification du principal de sécurité provenant de la base de données du Gestionnaire de comptes de sécurité (SAM) sont transmises à cette fonction pour l’authentification.

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

La fonction Msv1_0SubAuthenticationRoutine est appelée uniquement pour une authentification non interactive, uniquement sur le serveur d’authentification où réside le compte, et uniquement si une DLL de sous-authentification est inscrite sous la clé appropriée dans le Registre.

Note Le package d’authentification Kerberos n’appelle pas cette routine.
 

Syntaxe

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

Paramètres

[in] LogonLevel

Spécifie le niveau d’informations données dans le paramètre 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 de cette structure 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 d’utilisateur 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_0SubAuthenticationRoutine retourne la réussite à l’appelant. 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_0SubAuthenticationRoutine 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 du paramètre ProfileBuffer de la fonction LsaLogonUser, lorsqu’il contient une structure MSV1_0_LM20_LOGON_PROFILE. Les valeurs suivantes sont actuellement définies pour le membre UserFlags de la structure.

Valeur Signification
LOGON_GUEST
Il s’agit 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 des bits uniquement dans l’octet d’ordre élevé de UserFlags ; toutefois, cette convention n’est pas appliquée.
 

[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.

[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 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 déconnecté, spécifiez une grande valeur positive, telle que :

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 compte est marqué pour indiquer que le mot de passe doit être modifié lors de la prochaine ouverture de session.
STATUS_WRONG_PASSWORD
Le mot de passe n’était pas valide.

Remarques

Cette fonction est appelée par le package d’authentification MSV1_0 si une partie du paramètre AuthenticationInformation indique que la sous-authentification doit être effectuée et si une DLL de sous-authentification qui exporte la fonction Msv1_0SubAuthenticationRoutine est correctement inscrite sur la station de travail.

Le package d’authentification MSV1_0 ne prend pas en charge la sous-authentification pour les ouvertures de session interactives, qui nécessitent la structure MSV1_0_INTERACTIVE_LOGON . Les ouvertures de session réseau, qui nécessitent la structure MSV1_0_LM20_LOGON , peuvent utiliser la sous-authentification.

La fonction Msv1_0SubAuthenticationRoutine est appelée une fois que le contrôleur de domaine approprié a été localisé et que toutes les informations sur le principal de sécurité à authentifier ont été récupérées à partir de la base de données SAM. Lorsque la sous-authentification est utilisée, l’authentification est la responsabilité de la DLL de sous-authentification et doit être effectuée par la fonction Msv1_0SubAuthenticationRoutine exportée par cette DLL.

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