LsaLogonUser-Funktion (ntsecapi.h)
Die LsaLogonUser-Funktion authentifiziert die Anmeldedaten eines Sicherheitsprinzipals mithilfe gespeicherter Anmeldeinformationen.
Wenn die Authentifizierung erfolgreich ist, erstellt diese Funktion eine neue Anmeldesitzung und gibt ein Benutzertoken zurück.
Wenn ein neues Ticket granting ticket (TGT) mit neuen Zertifikatanmeldeinformationen abgerufen wird, werden alle TGTs und Servicetickets des Systems gelöscht. Alle Benutzerdiensttickets, die eine zusammengesetzte Identität aufweisen, werden ebenfalls gelöscht.
Syntax
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
);
Parameter
[in] LsaHandle
Ein Handle, das aus einem vorherigen Aufruf von LsaRegisterLogonProcess abgerufen wurde.
Der Aufrufer muss nur über SeTcbPrivilege verfügen, wenn mindestens eines der folgenden Punkte zutrifft:
- Ein Unterauthentifizierungspaket wird verwendet.
- KERB_S4U_LOGON wird verwendet, und der Aufrufer fordert ein Identitätswechseltoken an.
- Der LocalGroups-Parameter ist nicht NULL.
[in] OriginName
Eine Zeichenfolge, die den Ursprung des Anmeldeversuchs identifiziert. Weitere Informationen finden Sie in den Hinweisen.
[in] LogonType
Ein Wert der SECURITY_LOGON_TYPE-Enumeration , der den angeforderten Anmeldetyp angibt. Wenn LogonType interactive oder Batch ist, wird ein primäres Token generiert, das den neuen Benutzer darstellt. Wenn LogonType network ist, wird ein Identitätswechseltoken generiert.
[in] AuthenticationPackage
Ein Bezeichner des Authentifizierungspakets, das für die Authentifizierung verwendet werden soll. Sie können diesen Wert abrufen, indem Sie LsaLookupAuthenticationPackage aufrufen.
[in] AuthenticationInformation
Ein Zeiger auf einen Eingabepuffer, der Authentifizierungsinformationen wie Benutzername und Kennwort enthält. Das Format und der Inhalt dieses Puffers werden durch das Authentifizierungspaket bestimmt.
Dieser Parameter kann eine der folgenden Eingabepufferstrukturen für die MSV1_0- und Kerberos-Authentifizierungspakete sein.
Wert | Bedeutung |
---|---|
|
Authentifizieren einer interaktiven Benutzeranmeldung.
Die Member LogonDomainName, UserName und Password der MSV1_0_INTERACTIVE_LOGON-Struktur müssen auf Puffer im Arbeitsspeicher verweisen, die mit der Struktur selbst zusammenhängend sind. Der Wert des AuthenticationInformationLength-Parameters muss die Länge dieser Puffer berücksichtigen. |
|
Authentifizieren einer interaktiven Benutzeranmeldung. |
|
Authentifizieren eines Benutzers bei der ersten Netzwerkanmeldung oder Trennen der Verbindung. |
|
Authentifizieren eines Benutzers bei der Ticketaktualisierung, eine Variante der normalen Entsperrung der Arbeitsstation. |
|
Authentifizieren eines Benutzers mithilfe einer interaktiven intelligenten Karte Anmeldung. |
|
Authentifizieren eines Benutzers mithilfe eines Diensts für die Benutzeranmeldung (S4U). |
|
Authentifizieren eines Benutzers zum Entsperren einer Arbeitsstation, die während einer interaktiven Smart Karte Anmeldesitzung gesperrt wurde. |
|
Authentifizieren eines Benutzers smart Karte Anmeldung mithilfe von LOGON32_PROVIDER_WINNT50 oder LOGON32_PROVIDER_DEFAULT. |
|
Authentifizieren eines Benutzers, um eine Arbeitsstation zu entsperren, die während einer Smart Karte Anmeldesitzung gesperrt wurde. |
|
Authentifizieren eines Benutzers mithilfe von S4U-Clientanforderungen. Für die eingeschränkte Delegierung ist kein Aufruf von LsaLogonUser erforderlich, wenn sich der Client mit einem Authentifizierungspaket im LSA-Modus angemeldet hat. Unter Windows-Betriebssystemen gehören dazu Kerberos, NTLM, Secure Channel und Digest. Damit dieser Aufruf erfolgreich ist, muss Folgendes zutreffen:
|
|
Verarbeiten der zweiten Hälfte einer NTLM 2.0-Protokollanmeldung. Die erste Hälfte dieses Anmeldetyps erfolgt durch Aufrufen von LsaCallAuthenticationPackage mit der MsV1_0Lm20ChallengeRequest Nachricht. Weitere Informationen finden Sie in der Beschreibung der MsV1_0Lm20ChallengeRequest in MSV1_0_PROTOCOL_MESSAGE_TYPE.
Dieser Anmeldetyp kann ein Unterauthentifizierungspaket verwenden. |
|
Authentifizieren eines Benutzers mit Unterauthentifizierung. |
Weitere Informationen zum Puffer, der von anderen Authentifizierungspaketen verwendet wird, finden Sie in der Dokumentation zu diesen Authentifizierungspaketen.
[in] AuthenticationInformationLength
Die Länge des AuthenticationInformation-Puffers in Bytes.
[in, optional] LocalGroups
Eine Liste zusätzlicher Gruppenbezeichner, die dem Token des authentifizierten Benutzers hinzugefügt werden sollen. Diese Gruppenbezeichner werden zusammen mit der Standardgruppe WORLD und der Anmeldetypgruppe (Interaktiv, Batch oder Netzwerk) hinzugefügt, die automatisch in jedem Benutzertoken enthalten sind.
[in] SourceContext
Eine TOKEN_SOURCE Struktur, die das Quellmodul , z. B. den Sitzungs-Manager, und den Kontext identifiziert, der für dieses Modul nützlich sein kann. Diese Informationen sind im Benutzertoken enthalten und können durch Aufrufen von GetTokenInformation abgerufen werden.
[out] ProfileBuffer
Ein Zeiger auf einen Void-Zeiger, der die Adresse eines Ausgabepuffers empfängt, der Authentifizierungsinformationen enthält, z. B. die Anmeldeshell und das Basisverzeichnis.
Dieser Parameter kann eine der folgenden Ausgabepufferstrukturen für die MSV1_0- und Kerberos-Authentifizierungspakete sein.
Weitere Informationen zum Puffer, der von anderen Authentifizierungspaketen verwendet wird, finden Sie in der Dokumentation zu diesem Authentifizierungspaket.
Wenn dieser Puffer nicht mehr benötigt wird, muss die aufrufende Anwendung diesen Puffer durch Aufrufen der LsaFreeReturnBuffer-Funktion freigeben.
[out] ProfileBufferLength
Ein Zeiger auf eine ULONG , die die Länge des zurückgegebenen Profilpuffers in Bytes empfängt.
[out] LogonId
Ein Zeiger auf einen Puffer, der eine LUID empfängt, die die Anmeldesitzung eindeutig identifiziert. Diese LUID wird vom Domänencontroller zugewiesen, der die Anmeldeinformationen authentifiziert hat.
[out] Token
Ein Zeiger auf ein Handle, das das neue Benutzertoken empfängt, das für diese Sitzung erstellt wurde. Wenn Sie die Verwendung des Tokens abgeschlossen haben, geben Sie es durch Aufrufen der CloseHandle-Funktion frei.
[out] Quotas
Wenn ein primäres Token zurückgegeben wird, empfängt dieser Parameter eine QUOTA_LIMITS Struktur, die die Prozesskontingentgrenzwerte enthält, die dem anfänglichen Prozess des neu angemeldeten Benutzers zugewiesen sind.
[out] SubStatus
Wenn die Anmeldung aufgrund von Kontoeinschränkungen fehlgeschlagen ist, empfängt dieser Parameter Informationen darüber, warum die Anmeldung fehlgeschlagen ist. Dieser Wert wird nur festgelegt, wenn die Kontoinformationen des Benutzers gültig sind und die Anmeldung abgelehnt wird.
Dieser Parameter kann einer der folgenden SubStatus-Werte für das MSV1_0-Authentifizierungspaket sein.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt die Funktion STATUS_SUCCESS zurück.
Wenn die Funktion fehlschlägt, gibt sie einen NTSTATUS-Code zurück, der einer der folgenden Werte sein kann.
Wert | BESCHREIBUNG |
---|---|
|
Das Arbeitsspeicherkontingent des Aufrufers reicht nicht aus, um den vom Authentifizierungspaket zurückgegebenen Ausgabepuffer zuzuordnen. |
|
Das Benutzerkonto und das Kennwort sind legitim, aber das Benutzerkonto verfügt über eine Einschränkung, die die Anmeldung zu diesem Zeitpunkt verhindert. Weitere Informationen finden Sie unter dem Wert, der im SubStatus-Parameter gespeichert ist. |
|
Die bereitgestellten Authentifizierungsinformationen werden vom Authentifizierungspaket nicht erkannt. |
|
Der Anmeldeversuch ist fehlgeschlagen. Der Grund für den Fehler ist nicht angegeben, aber typische Gründe sind falsch geschriebene Benutzernamen und falsch geschriebene Kennwörter. |
|
Für die Authentifizierungsanforderung stehen keine Domänencontroller zur Verfügung. |
|
Das angegebene Authentifizierungspaket wird von der LSA nicht erkannt. |
|
Der Kerberos-Client hat ein ungültiges KDC-Zertifikat erhalten. Für die Geräteanmeldung ist eine strenge KDC-Überprüfung erforderlich, sodass das KDC über Zertifikate verfügen muss, die die Vorlage "Kerberos-Authentifizierung" oder eine entsprechende Vorlage verwenden. Außerdem kann das KDC-Zertifikat abgelaufen oder widerrufen sein, oder der Client wird aktiv angegriffen, wenn Anforderungen an den falschen Server gesendet werden. |
|
Der Kerberos-Client verwendet ein ungültiges Systemzertifikat. Für die Geräteanmeldung muss ein DNS-Name vorhanden sein. Außerdem kann das Systemzertifikat abgelaufen sein oder das falsche ausgewählt werden. |
Weitere Informationen finden Sie unter Rückgabewerte der LSA-Richtlinienfunktion.
Die LsaNtStatusToWinError-Funktion konvertiert einen NTSTATUS-Code in einen Windows-Fehlercode.
Hinweise
Der OriginName-Parameter sollte aussagekräftige Informationen angeben. Sie kann z. B. "TTY1" enthalten, um terminal one anzugeben, oder "NTLM – Remoteknoten JAZZ", um eine Netzwerkanmeldung anzugeben, die NTLM über einen Remoteknoten namens "JAZZ" verwendet.
Sie müssen LsaLogonUser separat aufrufen, um die PKINIT-Geräteanmeldeinformationen für LOCAL_SYSTEM und NETWORK_SERVICE zu aktualisieren. Wenn keine PKINIT-Geräteanmeldeinformationen vorhanden sind, führt ein erfolgreicher Aufruf keinen Vorgang aus. Wenn PKINIT-Geräteanmeldeinformationen vorhanden sind, werden bei einem erfolgreichen Aufruf die PKINIT-Geräteanmeldeinformationen bereinigt, sodass nur die Kennwortanmeldeinformationen verbleiben.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | ntsecapi.h |
Bibliothek | Secur32.lib |
DLL | Secur32.dll |