Freigeben über


SaslAcceptSecurityContext-Funktion (sspi.h)

Die SaslAcceptSecurityContext Funktion umschließt einen Standardaufruf an die Security Support Provider InterfaceAcceptSecurityContext (Allgemein) Funktion 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 auf, wobei das INBOUND-Flag festgelegt ist, um dieses Handle abzurufen.

[in, optional] phContext

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

[in] pInput

Zeiger auf eine SecBufferDesc- Struktur, die von einem Clientaufruf an die InitializeSecurityContext (Allgemein) Funktion 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 (General) Funktion leer und enthält die abfrageantwort, die vom Client für den zweiten Aufruf empfangen wurde.

[in] fContextReq

Bitkennzeichnungen, die die vom Server zum Einrichten des Kontexts erforderlichen Attribute angeben. Bitkennzeichnungen können mit bitweisenODER--Vorgängen kombiniert werden. In der folgenden Tabelle sind die möglichen Werte aufgeführt.

Wert Bedeutung
ASC_REQ_CONFIDENTIALITY
Verschlüsseln und Entschlüsseln von Nachrichten.

Gültig nur für den Digest-SSP für SASL.

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

[in] TargetDataRep

Gibt die Datendarstellung an, z. B. die Byte-Sortierung, 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 phContext Parameter angegebenen Handle identisch sein.

[in, out] pOutput

Zeiger auf eine SecBufferDesc- Struktur, die den Ausgabepufferdeskriptor enthält. Dieser Puffer wird an den Client gesendet, um zusätzliche Aufrufe an InitializeSecurityContext (General)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.

[out] pfContextAttr

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

Überprüfen Sie erst nach sicherheitsbezogenen Attributen, bis der endgültige Funktionsaufruf erfolgreich zurückgegeben wird. Attributkennzeichnungen, 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

Zeigen Sie auf eine TimeStamp- Struktur, die die Ablaufzeit des Kontexts empfängt. Es wird empfohlen, dass das Sicherheitspaket diesen Wert immer in der lokalen Zeit zurückgeben.

Hinweis Bis zum letzten Aufruf des Authentifizierungsprozesses kann die Ablaufzeit für den Kontext falsch sein, da weitere Informationen in späteren Phasen der Aushandlung 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
Die Authz-Verarbeitung ist nicht zulässig.
SEC_E_INSUFFICIENT_MEMORY
Nicht genügend Arbeitsspeicher ist verfügbar, um die Anforderung abzuschließen.
SEC_E_INVALID_TOKEN
Kein Tokenpuffer befindet sich im pOutput Parameter, oder die Nachricht konnte nicht entschlüsselt werden.

Bemerkungen

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, damit das endgültige Token verarbeitet werden kann. Nachdem der Austausch abgeschlossen wurde, wird SEC_E_CONTINUE_NEEDED mit einem zusätzlichen SASL-Servercookies, das mit SSPI-Nachrichtenfunktionen verschlüsselt ist, 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

Anforderung Wert
mindestens unterstützte Client- Keine unterstützt
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- sspi.h (include Security.h)
Library Secur32.lib
DLL- Secur32.dll