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 |
---|---|
|
Der Server darf die Identität des Clients annehmen. |
|
Sowohl der Client als auch der Server müssen ihre Identität nachweisen. |
|
Der Sicherheitskontext unterstützt die Erkennung von wiedergegebenen Paketen. |
|
Der Sicherheitskontext unterstützt die Erkennung von ungeordneten Nachrichten. |
|
Ein neuer Sitzungsschlüssel muss ausgehandelt werden. |
|
Wenn der Client ein interaktiver Benutzer ist, muss das Paket den Benutzer nach Möglichkeit zur Eingabe der entsprechenden Anmeldeinformationen auffordern. |
|
Der Eingabepuffer enthält paketspezifische Anmeldeinformationen, die zum Authentifizieren der Verbindung verwendet werden sollen. |
|
Das Paket muss Arbeitsspeicher zuweisen. Der Aufrufer muss schließlich die FreeContextBuffer-Funktion aufrufen, um den vom Paket zugewiesenen Arbeitsspeicher freizugeben. |
|
Der Aufrufer erwartet eine Transaktion zur gegenseitigen Authentifizierung mit drei Beinen. |
|
Es sollte ein Kommunikationskanal vom Typ Datagram verwendet werden. Weitere Informationen finden Sie unter Datagrammkontexte. |
|
Es sollte ein Verbindungstypkommunikationskanal verwendet werden. Weitere Informationen finden Sie unter Verbindungsorientierte Kontexte. |
|
Wenn der Kontext fehlschlägt, generieren Sie eine Fehlermeldung, die an den Client zurück gesendet wird. |
|
Es sollte ein Streamtypkommunikationskanal verwendet werden. Weitere Informationen finden Sie unter Stream Kontexte. |
|
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 |