Freigeben über


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:
  • Der Domänenname der Authentifizierungspartei ist falsch.
  • Die Domäne ist nicht verfügbar.
  • Fehler bei der Vertrauensstellung.
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

AcceptSecurityContext-

Kontextanforderungen

IdentitätswechselSecurityContext-

SspiAcquireCredentialsHandleAsync-

SspiDeleteSecurityContextAsync-

SspiGetAsyncCallStatus-