LsaCallAuthenticationPackage, fonction (ntsecapi.h)
La fonction LsaCallAuthenticationPackage est utilisée par une application d’ouverture de session pour communiquer avec un package d’authentification.
Cette fonction est généralement utilisée pour accéder aux services fournis par le package d’authentification.
Syntaxe
NTSTATUS LsaCallAuthenticationPackage(
[in] HANDLE LsaHandle,
[in] ULONG AuthenticationPackage,
[in] PVOID ProtocolSubmitBuffer,
[in] ULONG SubmitBufferLength,
[out] PVOID *ProtocolReturnBuffer,
[out] PULONG ReturnBufferLength,
[out] PNTSTATUS ProtocolStatus
);
Paramètres
[in] LsaHandle
Handle obtenu à partir d’un appel précédent à LsaRegisterLogonProcess ou LsaConnectUntrusted.
[in] AuthenticationPackage
Fournit l’identificateur du package d’authentification. Cette valeur est obtenue en appelant LsaLookupAuthenticationPackage.
[in] ProtocolSubmitBuffer
Mémoire tampon de messages spécifique au package d’authentification passée au package d’authentification.
Pour plus d’informations sur le format et le contenu de cette mémoire tampon, consultez la documentation relative au package d’authentification individuel.
[in] SubmitBufferLength
Indique la longueur, en octets, de la mémoire tampon ProtocolSubmitBuffer .
[out] ProtocolReturnBuffer
Pointeur qui reçoit l’adresse de la mémoire tampon retournée par le package d’authentification.
Pour plus d’informations sur le format et le contenu de cette mémoire tampon, consultez la documentation relative au package d’authentification individuel.
Cette mémoire tampon est allouée par cette fonction. Lorsque vous avez terminé d’utiliser cette mémoire tampon, libérez la mémoire en appelant la fonction LsaFreeReturnBuffer .
[out] ReturnBufferLength
Pointeur vers un ULONG qui reçoit la longueur de la mémoire tampon retournée, en octets.
[out] ProtocolStatus
Si la fonction réussit, ce paramètre reçoit un code NTSTATUS qui indique l’achèvement status du package d’authentification.
Valeur retournée
Si la fonction réussit, la valeur de retour est STATUS_SUCCESS. Vérifiez le paramètre ProtocolStatus pour obtenir le status retourné par le package d’authentification.
Si la fonction échoue, la valeur de retour est un code NTSTATUS . Voici les codes d’erreur possibles.
Code de retour | Description |
---|---|
|
Impossible de terminer l’appel, car le quota de mémoire du client n’est pas suffisant pour allouer la mémoire tampon de retour. |
|
Le package d’authentification spécifié n’est pas reconnu par LSA. |
|
Le client Kerberos a reçu un certificat KDC qui n’est pas valide. Pour l’ouverture de session de l’appareil, la validation KDC stricte est requise, de sorte que le KDC doit avoir des certificats qui utilisent le modèle « Authentification Kerberos » ou un équivalent. En outre, le certificat KDC peut être expiré, révoqué ou le client fait l’objet d’une attaque active en raison de l’envoi de demandes au mauvais serveur. |
|
Le client Kerberos utilise un certificat système qui n’est pas 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
Les applications de connexion peuvent appeler LsaCallAuthenticationPackage pour communiquer avec un package d’authentification. Il existe plusieurs raisons pour lesquelles une application peut le faire :
- Pour implémenter des protocoles d’authentification à plusieurs messages, tels que le protocole NTLM Challenge-Response.
- Pour transmettre les informations de changement d’état au package d’authentification. Par exemple, NTLM peut avertir le package MSV1_0 qu’un contrôleur de domaine précédemment inaccessible est désormais accessible. Le package d’authentification réinscrirait ensuite l’ouverture de session de tous les utilisateurs connectés à ce contrôleur de domaine.
Vous devez appeler LsaCallAuthenticationPackage pour propre 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 |