Freigeben über


SpInitLsaModeContextFn-Rückruffunktion (ntsecpkg.h)

Die SpInitLsaModeContext-Funktion ist die Clientverteilungsfunktion, die zum Einrichten eines Sicherheitskontexts zwischen einem Server und einem Client verwendet wird.

Die SpInitLsaModeContext-Funktion wird aufgerufen, wenn der Client die Funktion InitializeSecurityContext (General) der Security Support Provider Interface aufruft.

Syntax

SpInitLsaModeContextFn Spinitlsamodecontextfn;

NTSTATUS Spinitlsamodecontextfn(
  [in]  LSA_SEC_HANDLE CredentialHandle,
  [in]  LSA_SEC_HANDLE ContextHandle,
  [in]  PUNICODE_STRING TargetName,
  [in]  ULONG ContextRequirements,
  [in]  ULONG TargetDataRep,
  [in]  PSecBufferDesc InputBuffers,
  [out] PLSA_SEC_HANDLE NewContextHandle,
  [out] PSecBufferDesc OutputBuffers,
  [out] PULONG ContextAttributes,
  [out] PTimeStamp ExpirationTime,
  [out] PBOOLEAN MappedContext,
  [out] PSecBuffer ContextData
)
{...}

Parameter

[in] CredentialHandle

Optional. Behandeln Sie die Anmeldeinformationen , die für den Kontext verwendet werden sollen. CredentialHandle kann NULL sein, wenn der ContextHandle-Parameter nicht NULL ist.

[in] ContextHandle

Optional. Behandeln Sie den Kontext, der als Grundlage für diesen Kontext verwendet werden soll. ContextHandle kann NULL sein, wenn der CredentialHandle-Parameter nicht NULL ist.

[in] TargetName

Optional. Zeiger auf eine UNICODE_STRING , die den Namen des Ziels des Kontexts enthält. Der Inhalt von TargetName ist paketspezifisch und wird nicht vom LSA interpretiert.

[in] ContextRequirements

Flags, die die vom Client benötigten Kontextattribute angeben. Die tatsächlichen Kontextattribute werden im ContextAttributes-Parameter zurückgegeben.

In der folgenden Tabelle sind die gültigen Werte aufgeführt.

Wert Bedeutung
ISC_REQ_DELEGATE
Der Server darf die Identität des Clients annehmen.
ISC_REQ_MUTUAL_AUTH
Sowohl der Client als auch der Server müssen ihre Identität nachweisen.
ISC_REQ_REPLAY_DETECT
Der Sicherheitskontext unterstützt die Erkennung von wiedergegebenen Paketen.
ISC_REQ_SEQUENCE_DETECT
Der Sicherheitskontext unterstützt die Erkennung von ungeordneten Nachrichten.
ISC_REQ_USE_SESSION_KEY
Ein neuer Sitzungsschlüssel muss ausgehandelt werden.
ISC_REQ_PROMPT_FOR_CREDS
Wenn der Client ein interaktiver Benutzer ist, muss das Paket den Benutzer nach Möglichkeit zur Eingabe der entsprechenden Anmeldeinformationen auffordern.
ISC_REQ_USE_SUPPLIED_CREDS
Der Eingabepuffer enthält paketspezifische Anmeldeinformationen, die zum Authentifizieren der Verbindung verwendet werden sollen.
ISC_REQ_ALLOCATE_MEMORY
Das Paket muss Arbeitsspeicher zuweisen. Der Aufrufer muss schließlich die FreeContextBuffer-Funktion aufrufen, um den vom Paket zugewiesenen Arbeitsspeicher freizugeben.
ISC_REQ_USE_DCE_STYLE
Der Aufrufer erwartet eine Transaktion zur gegenseitigen Authentifizierung mit drei Beinen.
ISC_REQ_DATAGRAM
Es sollte ein Kommunikationskanal vom Typ Datagram verwendet werden. Weitere Informationen finden Sie unter Datagrammkontexte.
ISC_REQ_CONNECTION
Es sollte ein Verbindungstypkommunikationskanal verwendet werden. Weitere Informationen finden Sie unter Verbindungsorientierte Kontexte.
ISC_REQ_EXTENDED_ERROR
Wenn der Kontext fehlschlägt, generieren Sie eine Fehlermeldung, die an den Client zurück gesendet wird.
ISC_REQ_STREAM
Es sollte ein Streamtypkommunikationskanal verwendet werden. Weitere Informationen finden Sie unter Stream Kontexte.
ISC_REQ_INTEGRITY
Die Pufferintegrität wird überprüft. Es werden jedoch keine wiedergegebenen und nicht wiedergegebenen Nachrichten erkannt.

[in] TargetDataRep

Flag, das die Datendarstellung angibt, z. B. Bytereihenfolge, auf dem Ziel. Enthält SECURITY_NATIVE_DREP oder SECURITY_NETWORK_DREP.

[in] InputBuffers

Zeiger auf eine SecBufferDesc-Struktur , die die vorherige Antwortnachricht vom Server enthält. Beim ersten Aufruf dieser Funktion ist der InputBuffers-ParameterNULL.

[out] NewContextHandle

Zeiger, der ein Handle auf den neuen Sicherheitskontext empfängt. Wenn Sie die Verwendung des Sicherheitskontexts abgeschlossen haben, lassen Sie das Handle los, indem Sie die SpDeleteContext-Funktion aufrufen.

[out] OutputBuffers

Zeiger auf eine SecBufferDesc-Struktur , die das Sicherheitstoken enthält, das an den Server übergeben werden soll.

[out] ContextAttributes

Zeiger auf Flags, die die Attribute des neuen Kontexts angeben. Der Client fordert eine Reihe von Attributen mit dem Parameter ContextRequirements an . Wenn die ContextRequirements-Flags nicht mit den ContextAttributes-Flags übereinstimmen, muss der Client entscheiden, ob der Vorgang fortgesetzt oder beendet werden soll. Eine vollständige Liste der gültigen Flags finden Sie unter Kontextanforderungen.

[out] ExpirationTime

Zeiger auf einen TimeStamp , der die Ablaufzeit für den neuen Kontext empfängt.

[out] MappedContext

Zeiger auf einen booleschen Wert. Legen Sie MappedContext auf TRUE fest, wenn das Sicherheitspaket die SSP/AP-Funktionen im Benutzermodus implementiert.

[out] ContextData

Zeiger auf eine SecBuffer-Struktur , die die beim Erstellen eines Benutzermodus-Sicherheitskontexts zu kopierenden Daten empfängt. Ordnen Sie Mithilfe der Funktion AllocateLsaHeap Arbeitsspeicher für ContextData zu. Der LSA gibt den Arbeitsspeicher frei.

Rückgabewert

Wenn die Funktion erfolgreich ist und keine weitere Verarbeitung erforderlich ist, geben Sie STATUS_SUCCESS zurück. Wenn die Verarbeitung nicht abgeschlossen ist, sollte die Funktion SEC_I_CONTINUE_NEEDED zurückgeben. Wenn dieser Wert zurückgegeben wird, muss der Aufrufer die Funktion InitializeSecurityContext (General) erneut aufrufen.

Wenn die Funktion den Sicherheitskontext aus einem anderen Grund nicht erstellt, sollte sie einen NTSTATUS-Code zurückgeben, der den Grund für einen Fehler angibt.

Hinweise

Die SpAcceptLsaModeContext-Funktion ist die serverseitige Funktion zum Erstellen eines Kontexts.

SSP/APs müssen die SpInitLsaModeContext-Funktion implementieren. Der tatsächliche Name, der der Implementierung zugewiesen wird, liegt jedoch beim Entwickler.

Ein Zeiger auf die SpInitLsaModeContext-Funktion ist in der SECPKG_FUNCTION_TABLE Struktur verfügbar, die von der SpLsaModeInitialize-Funktion empfangen wird.

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 ntsecpkg.h

Weitere Informationen

AllocateLsaHeap

InitializeSecurityContext (Allgemein)

SECPKG_FUNCTION_TABLE

SpAcceptLsaModeContext

SpLsaModeInitialize

TimeStamp