LSA_AP_LOGON_USER Rückruffunktion (ntsecpkg.h)
Authentifiziert die Anmeldeinformationen eines Benutzers.
Diese Funktion wird nur für die anfängliche Anmeldung eines Benutzers aufgerufen. Nachfolgende Authentifizierungsanforderungen müssen LsaCallAuthenticationPackage verwenden.
Wenn LsaApLogonUser erfolgreich ist, wird eine Anmeldesitzung erstellt. Außerdem werden Informationen zurückgegeben, die zum Erstellen des Tokens verwendet werden, das den neu angemeldeten Benutzer darstellt.
Syntax
LSA_AP_LOGON_USER LsaApLogonUser;
NTSTATUS LsaApLogonUser(
[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] PLSA_UNICODE_STRING *AccountName,
[out] PLSA_UNICODE_STRING *AuthenticatingAuthority
)
{...}
Parameter
[in] ClientRequest
Zeiger auf einen nicht transparenten LSA_CLIENT_REQUEST Puffer, der die Anforderung des LSA-Clients darstellt. Ihr Authentifizierungspaket kann diesen Wert an AllocateClientBuffer und FreeClientBuffer übergeben, um den Clientprozess zu identifizieren, in dem Arbeitsspeicher zugeordnet oder freigegeben werden soll.
[in] LogonType
Ein SECURITY_LOGON_TYPE Wert, der den angeforderten Anmeldetyp angibt.
[in] AuthenticationInformation
Stellt die Authentifizierungsinformationen für das Authentifizierungspaket bereit. Der LSA gibt diesen Puffer frei. Dies ist der gleiche Eingabepuffer, der an LsaLogonUser übergeben wird.
[in] ClientAuthenticationBase
Stellt die Adresse der Authentifizierungsinformationen innerhalb des Clientprozesses bereit. Dies kann erforderlich sein, um Zeiger innerhalb des AuthenticationInformation-Puffers neu zuzuordnen.
[in] AuthenticationInformationLength
Gibt die Länge des AuthenticationInformation-Puffers in Bytes an.
[out] ProfileBuffer
Zeiger, der die Adresse des Profilpuffers im Clientprozess empfängt. Das Authentifizierungspaket ist für die Zuweisung des ProfileBuffer-Puffers innerhalb des Clientprozesses durch Aufrufen der AllocateClientBuffer-Funktion verantwortlich. Wenn bei der LSA jedoch anschließend ein Fehler auftritt, der eine erfolgreiche Anmeldung verhindert, gibt die LSA diesen Puffer frei.
Der Inhalt dieses Puffers wird durch das Authentifizierungspaket bestimmt. Der LSA ändert diesen Puffer nicht. Es gibt einfach den Wert an die LsaLogonUser-Funktion zurück.
[out] ProfileBufferLength
Zeiger auf eine ULONG , die die Länge des ProfileBuffer-Puffers in Bytes empfängt.
[out] LogonId
Zeiger auf eine LUID , die die neue Anmelde-ID empfängt, die diese Anmeldesitzung eindeutig identifiziert. Das Authentifizierungspaket ist für die Zuweisung dieser LUID und das Erstellen der Anmeldesitzung für diese Anmeldung verantwortlich.
[out] SubStatus
Zeiger auf einen NTSTATUS, der den Grund für Fehler aufgrund von Kontoeinschränkungen empfängt. Die in SubStatus zurückgegebenen Werte werden vom Authentifizierungspaket bestimmt.
In der folgenden Tabelle sind die SubStatus-Werte für die MSV1_0- und Kerberos-Authentifizierungspakete aufgeführt.
Weitere Informationen zu NTSTATUS-Codes finden Sie in der Headerdatei Subauth.h, die im Platform SDK enthalten ist.
Die LsaNtStatusToWinError-Funktion konvertiert einen NTSTATUS-Code in einen Windows-Fehlercode.
[out] TokenInformationType
Zeiger, der die Adresse eines LSA_TOKEN_INFORMATION_TYPE Werts empfängt, der den Typ der Informationen angibt, die für die Aufnahme in das zu erstellende Token zurückgegeben werden. Die Informationen werden im TokenInformation-Puffer zurückgegeben.
[out] TokenInformation
Zeiger, der Informationen empfängt, die in das Token eingeschlossen werden sollen. Format und Inhalt des TokenInformation-Puffers werden durch den TokenInformationType-Parameter angegeben. Ihr Authentifizierungspaket ist für die Zuweisung des von TokenInformation verwendeten Arbeitsspeichers verantwortlich. Dieser Arbeitsspeicher wird jedoch von der LSA freigegeben.
[out] AccountName
Zeiger auf eine LSA_UNICODE_STRING Struktur, die den Namen des Benutzerkontos empfängt. AccountName muss immer zurückgegeben werden, unabhängig vom Erfolg oder Misserfolg des Aufrufs. Seine Zeichenfolge ist im Überwachungsdatensatz für einen Authentifizierungsversuch enthalten. Ihr Authentifizierungspaket ist für die Zuweisung des von AccountName verwendeten Arbeitsspeichers verantwortlich. Dieser Arbeitsspeicher wird jedoch von der LSA freigegeben.
[out] AuthenticatingAuthority
Optional. Zeiger auf eine LSA_UNICODE_STRING Struktur, die die Beschreibung der Authentifizierungsautorität für die Anmeldung empfängt. Dieser Parameter kann NULL sein. Diese Zeichenfolge ist im Überwachungsdatensatz für einen Authentifizierungsversuch enthalten. Ihr Authentifizierungspaket ist für die Zuweisung des von AuthenticatingAuthority verwendeten Arbeitsspeichers verantwortlich. Dieser Arbeitsspeicher wird jedoch von der LSA freigegeben.
Das MSV1_0-Authentifizierungspaket gibt den Domänennamen der Domäne zurück, die das Konto überprüft. Das Kerberos-Authentifizierungspaket gibt den NetBIOS-Domänennamen zurück.
Rückgabewert
Wenn die Funktion erfolgreich ist, sollte sie STATUS_SUCCESS zurückgeben.
Wenn die Funktion fehlschlägt, sollte sie einen NTSTATUS-Fehlercode zurückgeben, bei dem es sich um einen der folgenden Werte oder einen der Rückgabewerte der LSA-Richtlinienfunktion handeln kann.
Rückgabecode | Beschreibung |
---|---|
|
Die Anmeldung konnte nicht abgeschlossen werden, da das Arbeitsspeicherkontingent des Clients nicht ausreicht, um den Rückgabepuffer zuzuweisen. |
|
Für die Authentifizierungsanforderung stehen keine Domänencontroller zur Verfügung. |
|
Der Anmeldeversuch ist fehlgeschlagen. Der Grund für den Fehler ist nicht angegeben. typische Gründe sind falsch geschriebene Benutzernamen und Kennwörter. |
|
Das Benutzerkonto und das Kennwort waren legitim, aber Einschränkungen des Benutzerkontos verhindern die Anmeldung zu diesem Zeitpunkt. Weitere Informationen finden Sie im SubStatus-Parameter . |
|
Die bereitgestellten Authentifizierungsinformationen werden vom angegebenen Authentifizierungspaket nicht erkannt. |
Aufrufende Anwendungen können die LsaNtStatusToWinError-Funktion verwenden, um den NTSTATUS-Code in einen Windows-Fehlercode zu konvertieren.
Hinweise
Authentifizierungspakete müssen eine der folgenden Funktionen implementieren: LsaApLogonUser, LsaApLogonUserEx oder LsaApLogonUserEx2.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | ntsecpkg.h |