Freigeben über


LSA_AP_LOGON_USER_EX2 Rückruffunktion (ntsecpkg.h)

Wird verwendet, um einen Benutzeranmeldungsversuch bei der anfänglichen Anmeldung des Benutzers zu authentifizieren. Für den Benutzer wird eine neue Anmeldesitzung eingerichtet, und Validierungsinformationen für den Benutzer werden zurückgegeben.

Syntax

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
)
{...}

Parameter

[in] ClientRequest

Zeiger auf einen LSA_CLIENT_REQUEST undurchsichtigen Puffer, der die Anforderung des Clients darstellt.

[in] LogonType

SECURITY_LOGON_TYPE Wert, der den Anmeldetyp identifiziert.

[in] ProtocolSubmitBuffer

Puffer, der die spezifischen Authentifizierungsinformationen für das Authentifizierungspaket bereitstellt.

[in] ClientBufferBase

Puffer, der die Adresse innerhalb des Clientprozesses bereitstellt, bei dem die Authentifizierungsinformationen ansässig waren. Dies kann erforderlich sein, um zeiger innerhalb des Authentifizierungsinformationspuffers zu beheben.

[in] SubmitBufferSize

Ein ULONG-Wert , der die Größe des Authentifizierungsinformationspuffers in Bytes angibt.

[out] ProfileBuffer

Zeiger, der die Adresse des Profilpuffers im Clientprozess empfängt. Das Authentifizierungspaket ist für die Zuweisung von ProfileBuffer innerhalb des Clientprozesses verantwortlich, indem die Funktion AllocateClientBuffer aufgerufen wird. Wenn der LSA jedoch anschließend auf einen Fehler stößt, der eine erfolgreiche Anmeldung verhindert, kümmert sich der LSA um die Freigabe dieses Puffers.

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

Zeiger auf eine ULONG , die die Größe des ProfileBuffer-Puffers empfängt.

[out] LogonId

Zeiger auf eine LUID-Variable , 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 LSA-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 durch das Authentifizierungspaket bestimmt.

In der folgenden Tabelle sind die SubStatus-Werte für die Authentifizierungspakete MSV1_0 und Kerberos aufgeführt.

Wert Bedeutung
STATUS_INVALID_LOGON_HOURS
Für das Benutzerkonto gelten Zeiteinschränkungen. Sie kann zurzeit nicht zum Anmelden verwendet werden.
STATUS_INVALID_WORKSTATION
Für das Benutzerkonto gelten Arbeitsstationseinschränkungen. Es kann nicht verwendet werden, um sich bei der aktuellen Arbeitsstation anzumelden.
STATUS_PASSWORD_EXPIRED
Das Benutzerkontokennwort ist abgelaufen.
STATUS_ACCOUNT_DISABLED
Das Benutzerkonto ist derzeit deaktiviert und kann nicht zum Anmelden verwendet werden.
 

Weitere Informationen zu NTSTATUS-Codes finden Sie in der Headerdatei Subauth.h, die im Lieferumfang des 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 für die Aufnahme in das zu erstellende Token zurückgegebenen Informationen angibt. Die Informationen werden mithilfe des Parameters TokenInformation zurückgegeben.

[out] TokenInformation

Zeiger, der die Adresse der Informationen empfängt, die in das Token eingeschlossen werden sollen. Das Format und den Inhalt von TokenInformation werden durch den TokenInformationType-Parameter angegeben. Ihr Authentifizierungspaket ist für die Zuweisung des von TokenInformation verwendeten Arbeitsspeichers verantwortlich. Dieser Arbeitsspeicher wird jedoch vom 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 vom LSA freigegeben.

[out] AuthenticatingAuthority

Optional. Zeiger auf eine LSA_UNICODE_STRING Struktur, die die Beschreibung der authentifizierenden Autoritä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 vom 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.

[out] MachineName

Optional. Zeiger, der die Adresse einer UNICODE_STRING Struktur empfängt, die den Namen des Computers des Clients enthält. Diese Zeichenfolge kann optional weggelassen werden. Diese Zeichenfolge ist im Überwachungsdatensatz für diesen Authentifizierungsversuch enthalten. Ihr Authentifizierungspaket ist für die Zuweisung des von MachineName verwendeten Arbeitsspeichers verantwortlich. Dieser Arbeitsspeicher wird jedoch vom LSA freigegeben.

Das MSV1_0-Authentifizierungspaket gibt den NetBIOS-Namen der Arbeitsstation des Clients zurück.

[out] PrimaryCredentials

Zeiger auf eine SECPKG_PRIMARY_CRED-Struktur , die primäre Anmeldeinformationen für die Übergabe an andere Pakete zurückgibt.

[out] SupplementalCredentials

Zeiger auf ein SECPKG_SUPPLEMENTAL_CRED_ARRAY Array von zusätzlichen Anmeldeinformationen für andere Pakete.

Rückgabewert

Wenn die Funktion erfolgreich ist, sollte sie STATUS_SUCCESS zurückgeben.

Andernfalls sollte ein NTSTATUS-Fehlercode zurückgegeben werden, bei dem es sich um einen der folgenden Werte oder einen der LSA-Richtlinienfunktionsrückgabewerte handeln kann.

Rückgabecode Beschreibung
STATUS_QUOTA_EXCEEDED
Die Anmeldung konnte nicht abgeschlossen werden, da das Arbeitsspeicherkontingent des Clients nicht ausreicht, um den Rückgabepuffer zuzuweisen.
STATUS_NO_LOGON_SERVERS
Für die Authentifizierungsanforderung stehen keine Domänencontroller zur Verfügung.
STATUS_LOGON_FAILURE
Der Anmeldeversuch ist fehlgeschlagen. Der Grund für den Fehler ist nicht angegeben. typische Gründe sind falsch geschriebene Benutzernamen und Kennwörter.
STATUS_ACCOUNT_RESTRICTION
Das Benutzerkonto und das Kennwort waren legitim, aber Die Einschränkungen des Benutzerkontos verhindern eine erfolgreiche Anmeldung zu diesem Zeitpunkt. Weitere Informationen finden Sie im SubStatus-Parameter .
STATUS_BAD_VALIDATION_CLASS
Die bereitgestellten Authentifizierungsinformationen werden vom Authentifizierungspaket nicht erkannt.
STATUS_INVALID_LOGON_TYPE
LogonType war ungültig.
STATUS_LOGON_SESSION_COLLISION
Die für diese Anmeldesitzung (im Parameter LogonId ) ausgewählte Anmelde-ID ist bereits vorhanden.
STATUS_NETLOGON_NOT_STARTED
Die SAM-Datenbank oder der Netlogon-Dienst ist erforderlich, aber nicht verfügbar.
STATUS_NO_MEMORY
Die Kontingente für virtuellen Arbeitsspeicher oder Seitendateien des Clients reichen nicht aus, um den Rückgabepuffer zuzuweisen.
 

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

Weitere Informationen

LSA_CLIENT_REQUEST

LSA_TOKEN_INFORMATION_TYPE

LSA_UNICODE_STRING

LsaApLogonUser

LsaApLogonUserEx

LsaCallAuthenticationPackage