Fonction LsaLogonUser (ntsecapi.h)
La fonction LsaLogonUser authentifie les données d’ouverture de session d’un principal de sécurité à l’aide des informations d’identification stockées.
Si l’authentification réussit, cette fonction crée une session d’ouverture de session et retourne un jeton utilisateur.
Lorsqu’un nouveau ticket d’octroi de ticket (TGT) est obtenu à l’aide de nouvelles informations d’identification de certificat, tous les TGT et les tickets de service du système sont vidés. Tous les tickets de service utilisateur qui sont d’une identité composée sont également purgés.
Syntaxe
NTSTATUS LsaLogonUser(
[in] HANDLE LsaHandle,
[in] PLSA_STRING OriginName,
[in] SECURITY_LOGON_TYPE LogonType,
[in] ULONG AuthenticationPackage,
[in] PVOID AuthenticationInformation,
[in] ULONG AuthenticationInformationLength,
[in, optional] PTOKEN_GROUPS LocalGroups,
[in] PTOKEN_SOURCE SourceContext,
[out] PVOID *ProfileBuffer,
[out] PULONG ProfileBufferLength,
[out] PLUID LogonId,
[out] PHANDLE Token,
[out] PQUOTA_LIMITS Quotas,
[out] PNTSTATUS SubStatus
);
Paramètres
[in] LsaHandle
Handle obtenu à partir d’un appel précédent à LsaRegisterLogonProcess.
L’appelant doit avoir SeTcbPrivilege uniquement si une ou plusieurs des conditions suivantes sont remplies :
- Un package de sous-authentification est utilisé.
- KERB_S4U_LOGON est utilisé et l’appelant demande un jeton d’emprunt d’identité.
- Le paramètre LocalGroups n’a pas la valeur NULL.
[in] OriginName
Chaîne qui identifie l’origine de la tentative d’ouverture de session. Pour plus d'informations, consultez la section Notes.
[in] LogonType
Valeur de l’énumération SECURITY_LOGON_TYPE qui spécifie le type d’ouverture de session demandé. Si LogonType est Interactif ou Batch, un jeton principal est généré pour représenter le nouvel utilisateur. Si LogonType est Network, un jeton d’emprunt d’identité est généré.
[in] AuthenticationPackage
Identificateur du package d’authentification à utiliser pour l’authentification. Vous pouvez obtenir cette valeur en appelant LsaLookupAuthenticationPackage.
[in] AuthenticationInformation
Pointeur vers une mémoire tampon d’entrée qui contient des informations d’authentification, telles que le nom d’utilisateur et le mot de passe. Le format et le contenu de cette mémoire tampon sont déterminés par le package d’authentification.
Ce paramètre peut être l’une des structures de mémoire tampon d’entrée suivantes pour les packages d’authentification MSV1_0 et Kerberos.
Valeur | Signification |
---|---|
|
Authentification d’une ouverture de session utilisateur interactive.
Les membres LogonDomainName, UserName et Password de la structure MSV1_0_INTERACTIVE_LOGON doivent pointer vers des mémoires tampons contiguës à la structure elle-même. La valeur du paramètre AuthenticationInformationLength doit prendre en compte la longueur de ces mémoires tampons. |
|
Authentification d’une ouverture de session utilisateur interactive. |
|
Authentification d’un utilisateur lors de la connexion réseau initiale ou de la déconnexion. |
|
Authentification d’un utilisateur lors de l’actualisation du ticket, une variante de l’ouverture de session de déverrouillage de la station de travail normale. |
|
Authentification d’un utilisateur à l’aide d’une ouverture de session intelligente interactive carte. |
|
Authentification d’un utilisateur à l’aide d’un service pour l’ouverture de session utilisateur (S4U). |
|
Authentification d’un utilisateur pour déverrouiller une station de travail qui a été verrouillée pendant une session d’ouverture de session de carte intelligente interactive. |
|
Authentification d’une ouverture de session intelligente carte utilisateur à l’aide de LOGON32_PROVIDER_WINNT50 ou de LOGON32_PROVIDER_DEFAULT. |
|
Authentification d’un utilisateur pour déverrouiller une station de travail qui a été verrouillée pendant une session de connexion intelligente carte. |
|
Authentification d’un utilisateur à l’aide de requêtes clientes S4U. Pour la délégation contrainte, un appel à LsaLogonUser n’est pas nécessaire si le client s’est connecté à l’aide d’un package d’authentification en mode LSA. Sur les systèmes d’exploitation Windows, ceux-ci incluent Kerberos, NTLM, Secure Channel et Digest. Pour que cet appel réussisse, les éléments suivants doivent être vrais :
|
|
Traitement de la deuxième moitié d’une ouverture de session de protocole NTLM 2.0. La première moitié de ce type d’ouverture de session est effectuée en appelant LsaCallAuthenticationPackage avec le message MsV1_0Lm20ChallengeRequest . Pour plus d’informations, consultez la description des MsV1_0Lm20ChallengeRequest dans MSV1_0_PROTOCOL_MESSAGE_TYPE.
Ce type d’ouverture de session peut utiliser un package de sous-authentification. |
|
Authentification d’un utilisateur avec une sous-authentification. |
Pour plus d’informations sur la mémoire tampon utilisée par d’autres packages d’authentification, consultez la documentation relative à ces packages d’authentification.
[in] AuthenticationInformationLength
Longueur, en octets, de la mémoire tampon AuthenticationInformation .
[in, optional] LocalGroups
Liste d’identificateurs de groupe supplémentaires à ajouter au jeton de l’utilisateur authentifié. Ces identificateurs de groupe seront ajoutés, ainsi que le groupe par défaut WORLD et le groupe de types d’ouverture de session (Interactif, Batch ou Réseau), qui sont automatiquement inclus dans chaque jeton utilisateur.
[in] SourceContext
Une structure TOKEN_SOURCE qui identifie le module source (par exemple, le gestionnaire de session) et le contexte qui peut être utile à ce module. Ces informations sont incluses dans le jeton utilisateur et peuvent être récupérées en appelant GetTokenInformation.
[out] ProfileBuffer
Pointeur vers un pointeur void qui reçoit l’adresse d’une mémoire tampon de sortie qui contient des informations d’authentification, telles que l’interpréteur de commandes d’ouverture de session et le répertoire de base.
Ce paramètre peut être l’une des structures de mémoire tampon de sortie suivantes pour les packages d’authentification MSV1_0 et Kerberos.
Pour plus d’informations sur la mémoire tampon utilisée par d’autres packages d’authentification, consultez la documentation relative à ce package d’authentification.
Lorsque cette mémoire tampon n’est plus nécessaire, l’application appelante doit libérer cette mémoire tampon en appelant la fonction LsaFreeReturnBuffer .
[out] ProfileBufferLength
Pointeur vers un ULONG qui reçoit la longueur, en octets, de la mémoire tampon de profil retournée.
[out] LogonId
Pointeur vers une mémoire tampon qui reçoit un LUID qui identifie de manière unique la session d’ouverture de session. Ce LUID est attribué par le contrôleur de domaine qui a authentifié les informations de connexion.
[out] Token
Pointeur vers un handle qui reçoit le nouveau jeton utilisateur créé pour cette session. Une fois que vous avez terminé d’utiliser le jeton, relâchez-le en appelant la fonction CloseHandle .
[out] Quotas
Lorsqu’un jeton principal est retourné, ce paramètre reçoit une structure QUOTA_LIMITS qui contient les limites de quota de processus attribuées au processus initial de l’utilisateur nouvellement connecté.
[out] SubStatus
Si l’ouverture de session a échoué en raison de restrictions de compte, ce paramètre reçoit des informations sur la raison de l’échec de l’ouverture de session. Cette valeur est définie uniquement si les informations de compte de l’utilisateur sont valides et si l’ouverture de session est rejetée.
Ce paramètre peut être l’une des valeurs SubStatus suivantes pour le package d’authentification MSV1_0.
Valeur retournée
Si la fonction réussit, la fonction retourne STATUS_SUCCESS.
Si la fonction échoue, elle retourne un code NTSTATUS , qui peut être l’une des valeurs suivantes.
Valeur | Description |
---|---|
|
Le quota de mémoire de l’appelant est insuffisant pour allouer la mémoire tampon de sortie retournée par le package d’authentification. |
|
Le compte d’utilisateur et le mot de passe sont légitimes, mais le compte d’utilisateur a une restriction qui empêche l’ouverture de session pour le moment. Pour plus d’informations, consultez la valeur stockée dans le paramètre SubStatus . |
|
Les informations d’authentification fournies ne sont pas reconnues par le package d’authentification. |
|
La tentative d’ouverture de session a échoué. La raison de l’échec n’est pas spécifiée, mais les raisons courantes incluent des noms d’utilisateur mal orthographiés et des mots de passe mal orthographiés. |
|
Aucun contrôleur de domaine n’est disponible pour traiter la demande d’authentification. |
|
Le package d’authentification spécifié n’est pas reconnu par la LSA. |
|
Le client Kerberos a reçu un certificat KDC non valide. Pour l’ouverture de session de l’appareil, une validation KDC stricte est requise, de sorte que le KDC doit avoir des certificats qui utilisent le modèle « Authentification Kerberos » ou équivalent. En outre, le certificat KDC peut être expiré, révoqué ou le client est sous l’attaque active de l’envoi de requêtes au serveur incorrect. |
|
Le client Kerberos utilise un certificat système non valide. Pour l’ouverture de session de l’appareil, il doit y avoir un nom DNS. En outre, le certificat système peut avoir expiré ou le certificat incorrect peut être sélectionné. |
Pour plus d’informations, consultez Valeurs de retour de la fonction de stratégie LSA.
La fonction LsaNtStatusToWinError convertit un code NTSTATUS en code d’erreur Windows.
Remarques
Le paramètre OriginName doit spécifier des informations significatives. Par exemple, il peut contenir « TTY1 » pour indiquer le terminal 1 ou « NTLM - nœud distant JAZZ » pour indiquer une ouverture de session réseau qui utilise NTLM via un nœud distant appelé « JAZZ ».
Vous devez appeler LsaLogonUser séparément pour mettre à jour les informations d’identification de l’appareil PKINIT pour LOCAL_SYSTEM et NETWORK_SERVICE. En l’absence d’informations d’identification d’appareil PKINIT, un appel réussi n’effectue aucune opération. Lorsqu’il existe des informations d’identification d’appareil PKINIT, un appel réussi nettoie les informations d’identification de l’appareil PKINIT afin que seules les informations d’identification du mot de passe restent.
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 | ntsecapi.h |
Bibliothèque | Secur32.lib |
DLL | Secur32.dll |