Funzione SaslAcceptSecurityContext (sspi.h)

La funzione SaslAcceptSecurityContext esegue il wrapping di una chiamata standard alla funzione Security Support Provider InterfaceAcceptSecurityContext (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 l'handle.

[in, optional] phContext

Puntatore a una struttura CtxtHandle. Nella prima chiamata a AcceptSecurityContext (Generale), questo puntatore è NULL. Nelle chiamate successive, phContext è l'handle per il 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 di bit che specificano gli attributi richiesti dal server per stabilire il contesto. I flag di bit possono essere combinati usando operazioni diOR bit per bit. Nella tabella seguente vengono illustrati i valori possibili.

Valore Significato
ASC_REQ_CONFIDENTIALITY
Crittografare e decrittografare i messaggi.

Valido solo con il provider di servizi condivisi 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 dei 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 che contiene il descrittore del buffer di output. Questo buffer viene inviato al client per l'input in chiamate aggiuntive a InitializeSecurityContext (Generale). È possibile generare un buffer di output anche se la funzione restituisce SEC_E_OK. Qualsiasi buffer generato deve essere inviato di nuovo all'applicazione client.

[out] pfContextAttr

Puntatore a una variabile che riceve un set di flag di bit che indica 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 verificare la presenza di attributi correlati alla sicurezza fino a quando la chiamata di funzione finale non viene restituita 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 nell'ora locale.

Nota Fino all'ultima chiamata del processo di autenticazione, la scadenza del contesto può essere errata perché verranno fornite altre informazioni 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. Nella tabella seguente vengono illustrati alcuni possibili valori restituiti da errori.

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

Osservazioni

Viene identificata la chiamata finale della funzione AcceptSecurityContext (Generale) che restituisce SEC_E_OK. 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 l'integrità e la privacy sono supportate. Questo cookie del server iniziale viene elaborato dal client e il client restituisce un cookie client per indicare quali servizi vengono richieste dal client. Il cookie client viene quindi decrittografato dal server e i servizi finali vengono determinati per il traffico di messaggio seguente.

Fabbisogno

Requisito Valore
client minimo supportato Nessuna supportata
server minimo supportato Windows Server 2003 [solo app desktop]
piattaforma di destinazione Finestre
intestazione sspi.h (include Security.h)
libreria Secur32.lib
dll Secur32.dll