SaslAcceptSecurityContext-Funktion (sspi.h)

Die SaslAcceptSecurityContext-Funktion umschließt einen Standardaufruf der AcceptSecurityContext-Funktion des SicherheitssupportanbietersAcceptSecurityContext (Allgemein) und umfasst die Erstellung von SASL-Servercookies.

Syntax

SECURITY_STATUS SEC_ENTRY SaslAcceptSecurityContext(
  [in]            PCredHandle    phCredential,
  [in, optional]  PCtxtHandle    phContext,
  [in]            PSecBufferDesc pInput,
  [in]            unsigned long  fContextReq,
  [in]            unsigned long  TargetDataRep,
  [out]           PCtxtHandle    phNewContext,
  [in, out]       PSecBufferDesc pOutput,
  [out]           unsigned long  *pfContextAttr,
  [out, optional] PTimeStamp     ptsExpiry
);

Parameter

[in] phCredential

Ein Handle für die Anmeldeinformationen des Servers. Der Server ruft die AcquireCredentialsHandle-Funktion mit dem INBOUND-Flag auf, um dieses Handle abzurufen.

[in, optional] phContext

Zeiger auf eine CtxtHandle-Struktur . Beim ersten Aufruf von AcceptSecurityContext (General) ist dieser Zeiger NULL. Bei nachfolgenden Aufrufen ist phContext das Handle für den teilgeformten Kontext, der im phNewContext-Parameter vom ersten Aufruf zurückgegeben wurde.

[in] pInput

Zeiger auf eine SecBufferDesc-Struktur , die von einem Clientaufruf der Funktion InitializeSecurityContext (General) generiert wird, die den Eingabepufferdeskriptor enthält.

SASL erfordert einen einzelnen Puffer vom Typ SECBUFFER_TOKEN. Der Puffer ist für den ersten Aufruf der AcceptSecurityContext-Funktion (Allgemein) leer und enthält die Vom Client für den zweiten Aufruf empfangene Anforderungsantwort.

[in] fContextReq

Bitflags, die die Attribute angeben, die der Server zum Einrichten des Kontexts benötigt. Bitflags können mit bitweisen OR-Vorgängen kombiniert werden. In der folgenden Tabelle sind die möglichen Werte aufgeführt.

Wert Bedeutung
ASC_REQ_CONFIDENTIALITY
Ver- und entschlüsseln Sie Nachrichten.

Nur für den Digest-SSP für SASL gültig.

ASC_REQ_HTTP
Verwenden Sie Digest für HTTP. Lassen Sie dieses Flag aus, um Digest als SASL-Mechanismus zu verwenden.

[in] TargetDataRep

Gibt die Datendarstellung an, z. B. die Bytereihenfolge, auf dem Ziel. Dieser Wert kann entweder SECURITY_NATIVE_DREP oder SECURITY_NETWORK_DREP sein.

[out] phNewContext

Zeiger auf eine CtxtHandle-Struktur . Beim ersten Aufruf von AcceptSecurityContext (General) empfängt dieser Zeiger das neue Kontexthandle. Bei nachfolgenden Aufrufen kann phNewContext mit dem im parameter phContext angegebenen Handle identisch sein.

[in, out] pOutput

Zeiger auf eine SecBufferDesc-Struktur , die den Ausgabepufferdeskriptor enthält. Dieser Puffer wird an den Client zur Eingabe in zusätzliche Aufrufe von InitializeSecurityContext (Allgemein) gesendet. Ein Ausgabepuffer kann auch dann generiert werden, wenn die Funktion SEC_E_OK zurückgibt. Alle generierten Puffer müssen an die Clientanwendung zurückgesendet werden.

[out] pfContextAttr

Zeiger auf eine Variable, die eine Reihe von Bitflags empfängt, die die Attribute des eingerichteten Kontexts angeben. Eine Beschreibung der verschiedenen Attribute finden Sie unter Kontextanforderungen. Für diesen Parameter verwendete Flags wird ASC_RET vorangestellt, z. B. ASC_RET_DELEGATE.

Überprüfen Sie erst nach sicherheitsbezogenen Attributen, bis der endgültige Funktionsaufruf erfolgreich zurückgegeben wird. Attributflags, die sich nicht auf die Sicherheit beziehen, z. B. das ASC_RET_ALLOCATED_MEMORY-Flag, können vor der endgültigen Rückgabe überprüft werden.

[out, optional] ptsExpiry

Zeiger auf eine TimeStamp-Struktur , die die Ablaufzeit des Kontexts empfängt. Es wird empfohlen, dass das Sicherheitspaket diesen Wert immer in Ortszeit zurückgibt.

Hinweis Bis zum letzten Aufruf des Authentifizierungsprozesses kann die Ablaufzeit für den Kontext falsch sein, da in späteren Phasen der Aushandlung weitere Informationen bereitgestellt werden. Daher muss ptsTimeStamp bis zum letzten Aufruf der Funktion NULL sein.
 

Rückgabewert

Wenn der Aufruf erfolgreich abgeschlossen wurde, gibt diese Funktion SEC_E_OK zurück. In der folgenden Tabelle sind einige mögliche Fehlerrückgabewerte aufgeführt.

Rückgabecode Beschreibung
SEC_E_ALGORITHM_MISMATCH
Eine Authentifizierungsverarbeitung ist nicht zulässig.
SEC_E_INSUFFICIENT_MEMORY
Es ist nicht genügend Arbeitsspeicher verfügbar, um die Anforderung abzuschließen.
SEC_E_INVALID_TOKEN
Im pOutput-Parameter befindet sich kein Tokenpuffer, oder die Nachricht konnte nicht entschlüsselt werden.

Hinweise

Der letzte Aufruf der AcceptSecurityContext (General) -Funktion, die SEC_E_OK zurückgibt, wird identifiziert. Wenn ein Rückgabetoken erstellt wird, wird die SASL-Verarbeitung für einen Roundtrip zurück zum Client angehalten, um die Verarbeitung des endgültigen Tokens zu ermöglichen. Nach Abschluss des Austauschs wird SEC_E_CONTINUE_NEEDED mit einem zusätzlichen SASL-Servercookies, das mit SSPI-Nachrichtenfunktionen verschlüsselt wurde, an die Anwendung zurückgegeben. Das anfängliche Servercookies gibt an, ob INTEGRITÄT und DATENSCHUTZ unterstützt werden. Dieses anfängliche Servercookies wird vom Client verarbeitet, und der Client gibt ein Clientcookies zurück, um anzugeben, welche Dienste der Client anfordert. Das Clientcookies wird dann vom Server entschlüsselt, und die endgültigen Dienste werden für den folgenden Nachrichtendatenverkehr bestimmt.

Anforderungen

   
Unterstützte Mindestversion (Client) Nicht unterstützt
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile sspi.h (einschließlich Security.h)
Bibliothek Secur32.lib
DLL Secur32.dll