LSA_AP_LOGON_USER_EX fonction de rappel (ntsecpkg.h)
Authentifie les informations d’identification d’ouverture de session d’un utilisateur.
Cette fonction est appelée par l’autorité de sécurité locale (LSA) uniquement pour l’ouverture de session initiale d’un utilisateur. Les demandes d’authentification suivantes doivent utiliser LsaCallAuthenticationPackage. Si LsaApLogonUserEx réussit, il crée une session d’ouverture de session et retourne les informations utilisées pour générer le jeton représentant l’utilisateur nouvellement connecté.
Cette fonction diffère de LsaApLogonUser en ce que le nom de la machine est ajouté à l’enregistrement d’audit pour la tentative d’ouverture de session.
Syntaxe
LSA_AP_LOGON_USER_EX LsaApLogonUserEx;
NTSTATUS LsaApLogonUserEx(
[in] PLSA_CLIENT_REQUEST ClientRequest,
[in] SECURITY_LOGON_TYPE LogonType,
[in] PVOID AuthenticationInformation,
[in] PVOID ClientAuthenticationBase,
[in] ULONG AuthenticationInformationLength,
[out] PVOID *ProfileBuffer,
[out] PULONG ProfileBufferLength,
[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
)
{...}
Paramètres
[in] ClientRequest
Pointeur vers un type de données opaque LSA_CLIENT_REQUEST représentant la requête du client LSA.
[in] LogonType
Structure SECURITY_LOGON_TYPE qui identifie le type de connexion tentée.
[in] AuthenticationInformation
Fournit les informations d’authentification spécifiques au package d’authentification. La LSA libère cette mémoire tampon.
[in] ClientAuthenticationBase
Fournit l’adresse des informations d’authentification dans le processus client. Cela peut être nécessaire pour remapper les pointeurs dans la mémoire tampon AuthenticationInformation .
[in] AuthenticationInformationLength
Indique la longueur de la mémoire tampon AuthenticationInformation .
[out] ProfileBuffer
Pointeur qui reçoit l’adresse de la mémoire tampon de profil dans le processus client. Le package d’authentification est chargé d’allouer la mémoire tampon ProfileBuffer dans le processus client en appelant la fonction AllocateClientBuffer . Toutefois, si LSA rencontre par la suite une erreur qui empêche une ouverture de session réussie, la LSA se chargera de libérer cette mémoire tampon.
Le contenu de cette mémoire tampon est déterminé par le package d’authentification. La LSA ne modifie pas cette mémoire tampon ; il retourne simplement la valeur à la fonction LsaLogonUser .
[out] ProfileBufferLength
Pointeur vers un ULONG qui reçoit la longueur de la mémoire tampon ProfileBuffer , en octets.
[out] LogonId
Pointeur vers une variable LUID qui reçoit le nouvel ID d’ouverture de session qui identifie de manière unique cette session d’ouverture de session. Le package d’authentification est chargé d’allouer ce LUID et de créer la session d’ouverture de session LSA pour cette ouverture de session.
[out] SubStatus
Pointeur vers un NTSTATUS qui reçoit la raison des défaillances dues à des restrictions de compte. Les valeurs retournées dans SubStatus sont déterminées par le package d’authentification.
Voici les valeurs SubStatus pour les packages d’authentification MSV1_0 et Kerberos.
Vous trouverez plus d’informations sur les codes NTSTATUS dans le fichier d’en-tête Subauth.h fourni avec le Kit de développement logiciel (SDK) platform.
[out] TokenInformationType
Pointeur qui reçoit l’adresse d’un LSA_TOKEN_INFORMATION_TYPE valeur qui indique le type d’informations retournées pour l’inclusion dans le jeton à créer. Les informations sont retournées au moyen du paramètre TokenInformation .
[out] TokenInformation
Pointeur qui reçoit l’adresse des informations à inclure dans le jeton. Le format et le contenu de TokenInformation sont indiqués par le paramètre TokenInformationType . Votre package d’authentification est responsable de l’allocation de la mémoire utilisée par TokenInformation ; Toutefois, cette mémoire sera libérée par l’ASE.
[out] AccountName
Pointeur vers une structure LSA_UNICODE_STRING qui reçoit le nom du compte d’utilisateur. AccountName doit toujours être retourné indépendamment de la réussite ou de l’échec de l’appel ; sa chaîne est incluse dans l’enregistrement d’audit pour une tentative d’authentification. Votre package d’authentification est responsable de l’allocation de la mémoire utilisée par AccountName Il sera libéré par la LSA.
[out] AuthenticatingAuthority
facultatif. Pointeur vers une structure LSA_UNICODE_STRING qui reçoit la description de l’autorité d’authentification pour l’ouverture de session. Ce paramètre peut être NULL. Cette chaîne est incluse dans l’enregistrement d’audit pour une tentative d’authentification. Votre package d’authentification est chargé d’allouer la mémoire utilisée par AuthenticatingAuthority ; Toutefois, cette mémoire sera libérée par l’ASE.
Le package d’authentification MSV1_0 retourne le nom de domaine du domaine qui valide le compte. Le package d’authentification Kerberos retourne le nom de domaine NetBIOS.
[out] MachineName
facultatif. Pointeur qui reçoit l’adresse d’une structure de LSA_UNICODE_STRING contenant le nom de la station de travail du client. Ces informations sont incluses dans l’enregistrement d’audit pour une tentative d’authentification. Votre package d’authentification est responsable de l’allocation de la mémoire utilisée par MachineName ; Toutefois, cette mémoire sera libérée par l’ASE.
Le package d’authentification MSV1_0 retourne le nom NetBIOS de la station de travail du client.
Valeur retournée
Si la fonction réussit, elle doit retourner STATUS_SUCCESS.
Sinon, il doit retourner un code d’erreur NTSTATUS, qui peut être l’une des valeurs suivantes ou l’une des valeurs de retour de la fonction de stratégie LSA.
Code de retour | Description |
---|---|
|
Impossible de terminer l’ouverture de session, car le quota de mémoire du client est insuffisant pour allouer la mémoire tampon de retour. |
|
Aucun contrôleur de domaine n’est disponible pour traiter la demande d’authentification. |
|
La tentative d’ouverture de session a échoué. La raison de l’échec n’est pas spécifiée ; les raisons courantes incluent des noms d’utilisateur et des mots de passe mal orthographiés. |
|
Le compte d’utilisateur et le mot de passe sont légitimes, mais les restrictions de compte d’utilisateur empêchent l’ouverture de session réussie pour l’instant. |
|
Les informations d’authentification fournies sont reconnues par le package d’authentification. |
Les applications appelantes peuvent utiliser la fonction LsaNtStatusToWinError pour convertir le code NTSTATUS en code d’erreur Windows.
Remarques
Les packages d’authentification doivent implémenter l’une des fonctions suivantes : LsaApLogonUser, LsaApLogonUserEx ou LsaApLogonUserEx2.
LsaApLogonUserEx a été ajouté pour la certification C2. C2 est une classification de sécurité définie par le gouvernement États-Unis.
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 | ntsecpkg.h |