Funzione SaslAcceptSecurityContext (sspi.h)

La funzione SaslAcceptSecurityContext esegue il wrapping di una chiamata standard alla funzione Security Support Provider Interface AcceptSecurityContext (Generale) e include la creazione di cookie del server SASL.

Sintassi

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
);

Parametri

[in] phCredential

Handle per le credenziali del server. Il server chiama la funzione AcquireCredentialsHandle con il flag INBOUND impostato per recuperare questo handle.

[in, optional] phContext

Puntatore a una struttura CtxtHandle . Nella prima chiamata a AcceptSecurityContext (Generale) questo puntatore è NULL. Nelle chiamate successive , phContext è l'handle del contesto parzialmente formato restituito nel parametro phNewContext dalla prima chiamata.

[in] pInput

Puntatore a una struttura SecBufferDesc generata da una chiamata client alla funzione InitializeSecurityContext (Generale) che contiene il descrittore del buffer di input.

SasL richiede un singolo buffer di tipo SECBUFFER_TOKEN. Il buffer è vuoto per la prima chiamata alla funzione AcceptSecurityContext (Generale) e contiene la risposta di richiesta ricevuta dal client per la seconda chiamata.

[in] fContextReq

Flag bit che specificano gli attributi richiesti dal server per stabilire il contesto. I flag bit possono essere combinati usando operazioni BIT-OR . Nella tabella seguente sono illustrati i possibili valori.

Valore Significato
ASC_REQ_CONFIDENTIALITY
Crittografare e decrittografare i messaggi.

Valido solo con il SSP Digest per sasL.

ASC_REQ_HTTP
Usare Digest per HTTP. Omettere questo flag per usare Digest come meccanismo SASL.

[in] TargetDataRep

Indica la rappresentazione dei dati, ad esempio l'ordinamento di byte, nella destinazione. Questo valore può essere SECURITY_NATIVE_DREP o SECURITY_NETWORK_DREP.

[out] phNewContext

Puntatore a una struttura CtxtHandle . Nella prima chiamata a AcceptSecurityContext (Generale) questo puntatore riceve il nuovo handle di contesto. Nelle chiamate successive , phNewContext può essere uguale all'handle specificato nel parametro phContext .

[in, out] pOutput

Puntatore a una struttura SecBufferDesc contenente il descrittore del buffer di output. Questo buffer viene inviato al client per l'input in chiamate aggiuntive a InitializeSecurityContext (Generale). Un buffer di output può essere generato anche se la funzione restituisce SEC_E_OK. Qualsiasi buffer generato deve essere inviato nuovamente all'applicazione client.

[out] pfContextAttr

Puntatore a una variabile che riceve un set di flag di bit che indicano gli attributi del contesto stabilito. Per una descrizione dei vari attributi, vedere Requisiti di contesto. I flag usati per questo parametro sono preceduti da ASC_RET, ad esempio ASC_RET_DELEGATE.

Non controllare gli attributi correlati alla sicurezza fino a quando la chiamata di funzione finale non restituisce correttamente. I flag di attributo non correlati alla sicurezza, ad esempio il flag ASC_RET_ALLOCATED_MEMORY, possono essere controllati prima della restituzione finale.

[out, optional] ptsExpiry

Puntatore a una struttura TimeStamp che riceve l'ora di scadenza del contesto. È consigliabile che il pacchetto di sicurezza restituisca sempre questo valore in ora locale.

Nota Fino all'ultima chiamata del processo di autenticazione, la scadenza del contesto può essere errata perché altre informazioni verranno fornite durante le fasi successive della negoziazione. Pertanto, ptsTimeStamp deve essere NULL fino all'ultima chiamata alla funzione.
 

Valore restituito

Se la chiamata viene completata correttamente, questa funzione restituisce SEC_E_OK. La tabella seguente mostra alcuni possibili valori restituiti dagli errori.

Codice restituito Descrizione
SEC_E_ALGORITHM_MISMATCH
L'elaborazione di Authz non è consentita.
SEC_E_INSUFFICIENT_MEMORY
Memoria insufficiente disponibile per completare la richiesta.
SEC_E_INVALID_TOKEN
Nessun buffer token si trova nel parametro pOutput o il messaggio non è riuscito a decrittografare.

Commenti

La chiamata finale della funzione AcceptSecurityContext (Generale) che restituisce SEC_E_OK viene identificata. Se viene generato un token restituito, l'elaborazione SASL viene sospesa per un round trip al client per consentire l'elaborazione del token finale. Al termine dello scambio, SEC_E_CONTINUE_NEEDED viene restituito all'applicazione con un cookie del server SASL aggiuntivo crittografato con funzioni di messaggio SSPI. Il cookie del server iniziale indica se SONO supportati INTEGRITÀ e PRIVACY. Questo cookie del server iniziale viene elaborato dal client e il client restituisce un cookie client per indicare quali servizi richiede il client. Il cookie client viene quindi decrittografato dal server e i servizi finali vengono determinati per il traffico di messaggi seguente.

Requisiti

   
Client minimo supportato Nessuno supportato
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione sspi.h (includere Security.h)
Libreria Secur32.lib
DLL Secur32.dll