Funzione di callback SpInitLsaModeContextFn (ntsecpkg.h)
La funzione SpInitLsaModeContext è la funzione dispatch client usata per stabilire un contesto di sicurezza tra un server e un client.
La funzione SpInitLsaModeContext viene chiamata quando il client chiama la funzione InitializeSecurityContext (Generale)dell'interfaccia del provider di supporto di sicurezza.
Sintassi
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
)
{...}
Parametri
[in] CredentialHandle
Facoltativo. Gestire le credenziali da usare per il contesto. CredentialHandle può essere NULL se il parametro ContextHandle non è NULL.
[in] ContextHandle
facoltativo. Gestire il contesto da usare come base per questo contesto. ContextHandle può essere NULL se il parametro CredentialHandle non è NULL.
[in] TargetName
facoltativo. Puntatore a un UNICODE_STRING contenente il nome della destinazione del contesto. Il contenuto di TargetName è specifico del pacchetto e non viene interpretato dall'LSA.
[in] ContextRequirements
Flag che indicano gli attributi di contesto richiesti dal client. Gli attributi di contesto effettivi vengono restituiti nel parametro ContextAttributes .
Nella tabella seguente sono elencati i valori validi.
Valore | Significato |
---|---|
|
Il server può rappresentare il client. |
|
Sia il client che il server devono dimostrare la propria identità. |
|
Il contesto di sicurezza supporterà il rilevamento dei pacchetti riprodotti. |
|
Il contesto di sicurezza supporterà il rilevamento dei messaggi non ordinati. |
|
È necessario negoziare una nuova chiave di sessione . |
|
Se il client è un utente interattivo, il pacchetto deve, se possibile, richiedere all'utente le credenziali appropriate. |
|
Il buffer di input contiene informazioni sulle credenziali specifiche del pacchetto che devono essere usate per autenticare la connessione. |
|
Il pacchetto deve allocare memoria. Il chiamante deve infine chiamare la funzione FreeContextBuffer per liberare memoria allocata dal pacchetto. |
|
Il chiamante prevede una transazione di autenticazione reciproca a tre gambe. |
|
È consigliabile usare un canale di comunicazione di tipo datagram. Per altre informazioni, vedere Contesti di Datagram. |
|
È necessario usare un canale di comunicazione di tipo connessione. Per altre informazioni, vedere Contesti orientati alla connessione. |
|
Se il contesto ha esito negativo, generare un messaggio di risposta di errore da inviare al client. |
|
È necessario usare un canale di comunicazione di tipo flusso. Per altre informazioni, vedere contesti di Stream. |
|
L'integrità del buffer viene verificata; Tuttavia, i messaggi riprodotti e non in sequenza non verranno rilevati. |
[in] TargetDataRep
Flag che indica la rappresentazione dei dati, ad esempio l'ordinamento dei byte, nella destinazione. Contiene SECURITY_NATIVE_DREP o SECURITY_NETWORK_DREP.
[in] InputBuffers
Puntatore a una struttura SecBufferDesc contenente il messaggio di risposta precedente dal server. La prima volta che questa funzione viene chiamata parametro InputBuffers è NULL.
[out] NewContextHandle
Puntatore che riceve un handle per il nuovo contesto di sicurezza. Al termine dell'uso del contesto di sicurezza, rilasciare l'handle chiamando la funzione SpDeleteContext .
[out] OutputBuffers
Puntatore a una struttura SecBufferDesc contenente il token di sicurezza da passare al server.
[out] ContextAttributes
Puntatore ai flag che specificano gli attributi del nuovo contesto. Il client richiede un set di attributi usando il parametro ContextRequirements . Se i flag ContextRequirements non corrispondono ai flag ContextAttributes , il client deve decidere se continuare o terminare. Per un elenco completo dei flag validi, vedere Requisiti di contesto.
[out] ExpirationTime
Puntatore a un timestamp che riceve l'ora di scadenza per il nuovo contesto.
[out] MappedContext
Puntatore a un valore booleano. Impostare MappedContext su TRUE se il pacchetto di sicurezza implementa le funzioni SSP/AP in modalità utente.
[out] ContextData
Puntatore a una struttura SecBuffer che riceve i dati da copiare durante la creazione di un contesto di sicurezza in modalità utente. Allocare memoria per ContextData usando la funzione AllocateLsaHeap . LSA libera la memoria.
Valore restituito
Se la funzione ha esito positivo e non è necessaria più elaborazione, restituire STATUS_SUCCESS. Se l'elaborazione non è completa, la funzione deve restituire SEC_I_CONTINUE_NEEDED. Quando viene restituito questo valore, il chiamante deve chiamare nuovamente la funzione InitializeSecurityContext (General).
Se la funzione non riesce a creare il contesto di sicurezza per qualsiasi altro motivo, deve restituire un codice NTSTATUS che indica il motivo per cui non è riuscito.
Commenti
La funzione SpAcceptLsaModeContext è la funzione lato server per la creazione di un contesto.
SSP/APs deve implementare la funzione SpInitLsaModeContext ; Tuttavia, il nome effettivo assegnato all'implementazione spetta allo sviluppatore.
Un puntatore alla funzione SpInitLsaModeContext è disponibile nella struttura SECPKG_FUNCTION_TABLEricevuta dalla funzione SpLsaModeInitialize .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | ntsecpkg.h |