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 |
---|---|
|
Der Aufruf konnte nicht abgeschlossen werden, da das Arbeitsspeicherkontingent des Clients nicht ausreicht, um den Rückgabepuffer zuzuweisen. |
|
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 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. |
|
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.
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 |