Partager via


LSA_AP_LOGON_USER_EX2 fonction de rappel (ntsecpkg.h)

Permet d’authentifier une tentative d’ouverture de session utilisateur sur l’ouverture de session initiale de l’utilisateur. Une nouvelle session d’ouverture de session est établie pour l’utilisateur et les informations de validation pour l’utilisateur sont retournées.

Syntaxe

LSA_AP_LOGON_USER_EX2 LsaApLogonUserEx2;

NTSTATUS LsaApLogonUserEx2(
  [in]  PLSA_CLIENT_REQUEST ClientRequest,
  [in]  SECURITY_LOGON_TYPE LogonType,
  [in]  PVOID ProtocolSubmitBuffer,
  [in]  PVOID ClientBufferBase,
  [in]  ULONG SubmitBufferSize,
  [out] PVOID *ProfileBuffer,
  [out] PULONG ProfileBufferSize,
  [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,
  [out] PSECPKG_PRIMARY_CRED PrimaryCredentials,
  [out] PSECPKG_SUPPLEMENTAL_CRED_ARRAY *SupplementalCredentials
)
{...}

Paramètres

[in] ClientRequest

Pointeur vers une mémoire tampon opaque LSA_CLIENT_REQUEST représentant la requête du client.

[in] LogonType

SECURITY_LOGON_TYPE valeur qui identifie le type d’ouverture de session.

[in] ProtocolSubmitBuffer

Mémoire tampon qui fournit les informations d’authentification spécifiques au package d’authentification.

[in] ClientBufferBase

Mémoire tampon qui fournit l’adresse dans le processus client auquel les informations d’authentification étaient résidentes. Cela peut être nécessaire pour corriger les pointeurs dans la mémoire tampon des informations d’authentification.

[in] SubmitBufferSize

Valeur ULONG qui indique la taille, en octets, de la mémoire tampon d’informations d’authentification.

[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 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] ProfileBufferSize

Pointeur vers un ULONG qui reçoit la taille de la mémoire tampon ProfileBuffer .

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

Le tableau suivant répertorie les valeurs SubStatus pour les packages d’authentification MSV1_0 et Kerberos.

Valeur Signification
STATUS_INVALID_LOGON_HOURS
Le compte d’utilisateur a des restrictions de temps ; il ne peut pas être utilisé pour se connecter pour l’instant.
STATUS_INVALID_WORKSTATION
Le compte d’utilisateur a des restrictions de station de travail ; il ne peut pas être utilisé pour se connecter à la station de travail actuelle.
STATUS_PASSWORD_EXPIRED
Le mot de passe du compte d’utilisateur a expiré.
STATUS_ACCOUNT_DISABLED
Le compte d’utilisateur est actuellement désactivé et ne peut pas être utilisé pour se connecter.
 

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.

La fonction LsaNtStatusToWinError convertit un code NTSTATUS en code d’erreur Windows.

[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 ; Toutefois, cette mémoire sera libérée par l’ASE.

[out] AuthenticatingAuthority

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

Optionnel. Pointeur qui reçoit l’adresse d’une structure de UNICODE_STRING contenant le nom de l’ordinateur du client. Cette chaîne peut éventuellement être omise. Cette chaîne est incluse dans l’enregistrement d’audit pour cette 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.

[out] PrimaryCredentials

Pointeur vers une structure SECPKG_PRIMARY_CRED qui retourne des informations d’identification principales pour la remise à d’autres packages.

[out] SupplementalCredentials

Pointeur vers un tableau SECPKG_SUPPLEMENTAL_CRED_ARRAY d’informations d’identification supplémentaires pour d’autres packages.

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
STATUS_QUOTA_EXCEEDED
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.
STATUS_NO_LOGON_SERVERS
Aucun contrôleur de domaine n’est disponible pour traiter la demande d’authentification.
STATUS_LOGON_FAILURE
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.
STATUS_ACCOUNT_RESTRICTION
Le compte d’utilisateur et le mot de passe étaient légitimes, mais des restrictions de compte d’utilisateur empêchaient la connexion réussie pour le moment. Pour plus d’informations, consultez le paramètre SubStatus .
STATUS_BAD_VALIDATION_CLASS
Les informations d’authentification fournies ne sont pas reconnues par le package d’authentification.
STATUS_INVALID_LOGON_TYPE
LogonType n’était pas valide.
STATUS_LOGON_SESSION_COLLISION
L’ID d’ouverture de session sélectionné pour cette session d’ouverture de session (dans le paramètre LogonId ) existe déjà.
STATUS_NETLOGON_NOT_STARTED
La base de données SAM ou le service Netlogon est obligatoire, mais n’est pas disponible.
STATUS_NO_MEMORY
Les quotas de mémoire virtuelle ou de fichier de page du client sont insuffisants pour allouer la mémoire tampon de retour.
 

Les applications appelantes peuvent utiliser la fonction LsaNtStatusToWinError pour convertir le code NTSTATUS en code d’erreur Windows.

Notes

Les packages d’authentification doivent implémenter l’une des fonctions suivantes : LsaApLogonUser, LsaApLogonUserEx ou LsaApLogonUserEx2.

Spécifications

   
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

Voir aussi

LSA_CLIENT_REQUEST

LSA_TOKEN_INFORMATION_TYPE

LSA_UNICODE_STRING

LsaApLogonUser

LsaApLogonUserEx

LsaCallAuthenticationPackage