LsaCallAuthenticationPackage-Funktion (ntsecapi.h)

Die LsaCallAuthenticationPackage-Funktion wird von einer Anmeldeanwendung verwendet, um mit einem Authentifizierungspaket zu kommunizieren.

Diese Funktion wird in der Regel verwendet, um auf dienste zuzugreifen, die vom Authentifizierungspaket bereitgestellt werden.

Syntax

NTSTATUS LsaCallAuthenticationPackage(
  [in]  HANDLE    LsaHandle,
  [in]  ULONG     AuthenticationPackage,
  [in]  PVOID     ProtocolSubmitBuffer,
  [in]  ULONG     SubmitBufferLength,
  [out] PVOID     *ProtocolReturnBuffer,
  [out] PULONG    ReturnBufferLength,
  [out] PNTSTATUS ProtocolStatus
);

Parameter

[in] LsaHandle

Ein Handle, das aus einem vorherigen Aufruf von LsaRegisterLogonProcess oder LsaConnectUntrusted abgerufen wurde.

[in] AuthenticationPackage

Stellt den Bezeichner des Authentifizierungspakets bereit. Dieser Wert wird durch Aufrufen von LsaLookupAuthenticationPackage abgerufen.

[in] ProtocolSubmitBuffer

Ein Authentifizierungspaketspezifischer Nachrichtenpuffer, der an das Authentifizierungspaket übergeben wird.

Informationen zu Format und Inhalt dieses Puffers finden Sie in der Dokumentation zum einzelnen Authentifizierungspaket.

[in] SubmitBufferLength

Gibt die Länge des ProtocolSubmitBuffer-Puffers in Bytes an.

[out] ProtocolReturnBuffer

Ein Zeiger, der die Adresse des Puffers empfängt, der vom Authentifizierungspaket zurückgegeben wird.

Informationen zu Format und Inhalt dieses Puffers finden Sie in der Dokumentation zum einzelnen Authentifizierungspaket.

Dieser Puffer wird von dieser Funktion zugeordnet. Wenn Sie mit der Verwendung dieses Puffers fertig sind, geben Sie den Speicher frei, indem Sie die LsaFreeReturnBuffer-Funktion aufrufen.

[out] ReturnBufferLength

Ein Zeiger auf eine ULONG , die die Länge des zurückgegebenen Puffers in Bytes empfängt.

[out] ProtocolStatus

Wenn die Funktion erfolgreich ist, empfängt dieser Parameter einen NTSTATUS-Code, der die Vervollständigung status des Authentifizierungspakets angibt.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert STATUS_SUCCESS. Überprüfen Sie den ProtocolStatus-Parameter, um die vom Authentifizierungspaket zurückgegebene status abzurufen.

Wenn die Funktion fehlschlägt, ist der Rückgabewert ein NTSTATUS-Code . Im Folgenden sind mögliche Fehlercodes aufgeführt.

Rückgabecode Beschreibung
STATUS_QUOTA_EXCEEDED
Der Aufruf konnte nicht abgeschlossen werden, da das Arbeitsspeicherkontingent des Clients nicht ausreicht, um den Rückgabepuffer zuzuweisen.
STATUS_NO_SUCH_PACKAGE
Das angegebene Authentifizierungspaket wird von der LSA nicht erkannt.
STATUS_PKINIT_FAILURE
Der Kerberos-Client hat ein ungültiges KDC-Zertifikat erhalten. Für die Geräteanmeldung ist eine strenge KDC-Überprüfung erforderlich, sodass der 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 werden, oder der Client wird aktiv angegriffen, wenn Anforderungen an den falschen Server gesendet werden.
STATUS_PKINIT_CLIENT_FAILURE
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 oder das falsche zertifikat 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

Anmeldeanwendungen können LsaCallAuthenticationPackage aufrufen, um mit einem Authentifizierungspaket zu kommunizieren. Es gibt mehrere Gründe, warum eine Anwendung dies tun kann:

  • So implementieren Sie Authentifizierungsprotokolle mit mehreren Nachrichten, z. B. das NTLM-Challenge-Response-Protokoll.
  • So übergeben Sie Statusänderungsinformationen an das Authentifizierungspaket. Beispielsweise kann das NTLM das MSV1_0 Pakets benachrichtigen, dass ein zuvor nicht erreichbarer Domänencontroller jetzt erreichbar ist. Das Authentifizierungspaket meldet dann alle Benutzer erneut an, die sich bei diesem Domänencontroller angemeldet haben.
In der Regel wird diese Funktion verwendet, um Informationen mit einem benutzerdefinierten Authentifizierungspaket auszutauschen. Diese Funktion wird von einer Anwendung nicht benötigt, die eines der mit Windows bereitgestellten Authentifizierungspakete verwendet, z. B. MSV1_0 oder Kerberos.

Sie müssen LsaCallAuthenticationPackage aufrufen, um PKINIT-Geräteanmeldeinformationen für LOCAL_SYSTEM und NETWORK_SERVICE zu sauber. Wenn keine PKINIT-Geräteanmeldeinformationen vorhanden sind, führt ein erfolgreicher Aufruf keinen Vorgang aus. Wenn PKINIT-Geräteanmeldeinformationen vorhanden sind, bereinigt ein erfolgreicher Aufruf die PKINIT-Geräteanmeldeinformationen, sodass nur die Kennwortanmeldeinformationen erhalten bleiben.

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

Weitere Informationen

LsaFreeReturnBuffer

LsaLookupAuthenticationPackage

LsaNtStatusToWinError