SspiAcceptSecurityContextAsync-Funktion (sspi.h)
Mit der SspiAcceptSecurityContextAsync--Funktion kann die Serverkomponente einer Transportanwendung asynchron einen Sicherheitskontext zwischen dem Server und einem Remoteclient einrichten. Der Remoteclient ruft die SspiInitializeSecurityContextAsync--Funktion auf, um den Prozess der Einrichtung eines Sicherheitskontexts asynchron zu starten.
Anmerkung
Diese Funktion dient als asynchrones Gegenstück zur AcceptSecurityContext-Funktion.
Syntax
SECURITY_STATUS SspiAcceptSecurityContextAsync(
SspiAsyncContext *AsyncContext,
PCredHandle phCredential,
PCtxtHandle phContext,
PSecBufferDesc pInput,
unsigned long fContextReq,
unsigned long TargetDataRep,
PCtxtHandle phNewContext,
PSecBufferDesc pOutput,
unsigned long *pfContextAttr,
PTimeStamp ptsExpiry
);
Parameter
AsyncContext
Der asynchrone Aufrufkontext.
phCredential
Ein Handle für die Serveranmeldeinformationen. Um dieses Handle abzurufen, ruft der Server die SspiAcquireCredentialsHandleAsync--Funktion mit dem SECPKG_CRED_INBOUND- oder SECPKG_CRED_BOTH-Flagsatz auf.
phContext
Ein Zeiger auf eine CtxtHandle- Struktur. Beim ersten Aufruf von SspiAcceptSecurityContextAsyncist dieser Zeiger NULL-. Bei nachfolgenden Aufrufen gibt phContext- den teilweise gebildeten Kontext an, der im phNewContext Parameter durch den ersten Aufruf zurückgegeben wird.
pInput
Ein Zeiger auf eine SecBufferDesc- Struktur, die von einem Clientaufruf an SspiInitializeSecurityContextAsyncgeneriert wird. Die Struktur enthält den Eingabepufferdeskriptor.
Der erste Puffer muss vom Typ SECBUFFER_TOKEN sein und das vom Client empfangene Sicherheitstoken enthalten. Der zweite Puffer sollte vom Typ SECBUFFER_EMPTYsein.
fContextReq
Bitkennzeichnungen, die die vom Server zum Einrichten des Kontexts erforderlichen Attribute angeben.
Eine vollständige Liste der Parameterwerte finden Sie unter AcceptSecurityContext: fContextReq.
TargetDataRep
Die Datendarstellung, z. B. byte-Sortierung, auf dem Ziel. Dieser Parameter kann entweder SECURITY_NATIVE_DREP oder SECURITY_NETWORK_DREPsein.
phNewContext
Ein Zeiger auf eine CtxtHandle- Struktur. Beim ersten Aufruf von SspiAcceptSecurityContextAsyncempfängt dieser Zeiger das neue Kontexthandle. Bei nachfolgenden Aufrufen kann phNewContext- mit dem im phContext Parameter angegebenen Handle identisch sein.
pOutput
Ein Zeiger auf eine SecBufferDesc- Struktur, die den Ausgabepufferdeskriptor enthält. Dieser Puffer wird an den Client gesendet, um zusätzliche Aufrufe an SspiInitializeSecurityContextAsync-einzugeben. Ein Ausgabepuffer kann auch dann generiert werden, wenn die Funktion SEC_E_OK zurückgibt. Jeder generierte Puffer muss an die Clientanwendung zurückgesendet werden.
Bei der Ausgabe empfängt dieser Puffer ein Token für den asynchronen Sicherheitskontext. Das Token muss an den Client gesendet werden. Die Funktion kann auch einen Puffer vom Typ SECBUFFER_EXTRA zurückgeben.
pfContextAttr
Ein Zeiger auf eine Gruppe von Bitkennzeichnungen, die die Attribute des etablierten Kontexts angeben.
Beschreibungen der Attribute finden Sie unter AcceptSecurityContext: pfContextAttr.
ptsExpiry
Ein Zeiger auf eine TimeStamp- Struktur, die die Ablaufzeit des Kontexts empfängt.
Siehe AcceptSecurityContext: ptsExpiry.
Rückgabewert
Gibt SEC_E_OK zurück, wenn die asynchrone Anforderung zum Einrichten eines Sicherheitskontexts für die Ausführung erfolgreich in die Warteschlange gestellt wurde. Andernfalls wird der generierte Fehler zurückgegeben, der versucht, ihn in die Warteschlange zu stellen. Um den Status des Vorgangs abzurufen, verwenden Sie SspiGetAsyncCallStatus.
Wenn der vom Client empfangene Sicherheitskontext akzeptiert wurde, gibt SspiGetAsyncCallStatus SEC_E_OK oder einen der SSPI-Codes in der folgenden Tabelle zurück. Andernfalls kann es SEC_I_ASYNC_CALL_PENDING zurückgeben, wenn der Aufruf noch ausgeführt wird, oder einen der folgenden schwerwiegenden Fehlercodes in der zweiten Tabelle unten.
Rückgabecode |
Beschreibung |
---|---|
SEC_E_INCOMPLETE_MESSAGE 0x80090318L |
Die Funktion war erfolgreich. Die Daten im Eingabepuffer sind unvollständig. Die Anwendung muss zusätzliche Daten vom Client lesen und SspiAcceptSecurityContextAsync erneut aufrufen. |
SEC_I_COMPLETE_AND_CONTINUE 0x00090314L |
Die Funktion war erfolgreich. Der Server muss CompleteAuthToken aufrufen und das Ausgabetoken an den Client übergeben. Der Server muss dann auf ein Rückgabetoken vom Client warten, bevor ein weiterer Aufruf von SspiAcceptSecurityContextAsync vorgenommen wird. |
SEC_I_COMPLETE_NEEDED 0x00090313L |
Die Funktion war erfolgreich. Der Server muss die Erstellung der Nachricht vom Client abschließen, bevor CompleteAuthTokenaufgerufen wird. |
SEC_I_CONTINUE_NEEDED 0x00090312L |
Die Funktion war erfolgreich. Der Server muss das Ausgabetoken an den Client senden und auf ein zurückgegebenes Token warten. Das zurückgegebene Token sollte in pInput- für einen anderen Aufruf von SspiAcceptSecurityContextAsync übergeben werden. |
Schwerwiegende Fehlercodes
Rückgabecode |
Beschreibung |
---|---|
SEC_E_INSUFFICIENT_MEMORY 0x80090300L |
Fehler bei der Funktion. Es steht nicht genügend Arbeitsspeicher zur Verfügung, um die angeforderte Aktion abzuschließen. |
SEC_E_INTERNAL_ERROR 0x80090304L |
Fehler bei der Funktion. Ein Fehler ist aufgetreten, der keinem SSPI-Fehlercode zugeordnet wurde. |
SEC_E_INVALID_HANDLE 0x80100003L |
Fehler bei der Funktion. Das an die Funktion übergebene Handle ist ungültig. |
SEC_E_INVALID_TOKEN 0x80090308L |
Fehler bei der Funktion. Das an die Funktion übergebene Token ist ungültig. |
SEC_E_LOGON_DENIED 0x8009030CL |
Fehler bei der Anmeldung. |
SEC_E_NO_AUTHENTICATING_AUTHORITY 0x80090311L |
Fehler bei der Funktion. Es konnte keine Autorität für die Authentifizierung kontaktiert werden. Dies kann auf die folgenden Bedingungen zurückzuführen sein:
|
SEC_E_NO_CREDENTIALS 0x8009030EL |
Fehler bei der Funktion. Die Anmeldeinformationen Handle, die im phCredential Parameter angegeben sind, ist ungültig. |
SEC_E_UNSUPPORTED_FUNCTION 0x80090302L |
Fehler bei der Funktion. Der fContextReq Parameter hat ein ungültiges Kontextattribute-Flag (ASC_REQ_DELEGATE oder ASC_REQ_PROMPT_FOR_CREDS) angegeben. |
Bemerkungen
Die SspiAcceptSecurityContextAsync Funktion ist das Server-Gegenstück zur SspiInitializeSecurityContextAsync--Funktion.
Der Aufrufer ist dafür verantwortlich, zu bestimmen, ob die endgültigen Kontextattribute ausreichen. Wenn z. B. Vertraulichkeit (Verschlüsselung) angefordert, aber nicht hergestellt werden konnte, können einige Anwendungen die Verbindung sofort herunterfahren. Wenn der Sicherheitskontext nicht hergestellt werden kann, muss der Server den teilweise erstellten Kontext durch Aufrufen der SspiDeleteSecurityContextAsync-Funktion freigeben.
Weitere Hinweise finden Sie unter AcceptSecurityContext-.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 10, Version 1607 [nur Kernelmodustreiber] |
mindestens unterstützte Server- | Windows Server 2016 [nur Kernelmodustreiber] |
Header- | sspi.h |
Siehe auch
IdentitätswechselSecurityContext-
SspiAcquireCredentialsHandleAsync-