Condividi tramite


Funzione SspiAcceptSecurityContextAsync (sspi.h)

La funzione di SspiAcceptSecurityContextAsync consente al componente server di un'applicazione di trasporto di stabilire in modo asincrono un contesto di sicurezza tra il server e un client remoto. Il client remoto chiama la funzione SspiInitializeSecurityContextAsync per avviare in modo asincrono il processo di definizione di un contesto di sicurezza.

Nota

Questa funzione funge da controparte asincrona della funzione AcceptSecurityContext.

Sintassi

SECURITY_STATUS SspiAcceptSecurityContextAsync(
  SspiAsyncContext *AsyncContext,
  PCredHandle      phCredential,
  PCtxtHandle      phContext,
  PSecBufferDesc   pInput,
  unsigned long    fContextReq,
  unsigned long    TargetDataRep,
  PCtxtHandle      phNewContext,
  PSecBufferDesc   pOutput,
  unsigned long    *pfContextAttr,
  PTimeStamp       ptsExpiry
);

Parametri

AsyncContext

Contesto di chiamata asincrona.

phCredential

Handle per le credenziali del server. Per recuperare questo handle, il server chiama la funzione SspiAcquireCredentialsHandleAsync con il flag SECPKG_CRED_INBOUND o SECPKG_CRED_BOTH impostato.

phContext

Puntatore a una struttura CtxtHandle. Nella prima chiamata a SspiAcceptSecurityContextAsync, questo puntatore è NULL. Nelle chiamate successive phContext specifica il contesto parzialmente formato restituito nel parametro phNewContext dalla prima chiamata.

pInput

Puntatore a una struttura di SecBufferDesc generata da una chiamata client a SspiInitializeSecurityContextAsync. La struttura contiene il descrittore del buffer di input.

Il primo buffer deve essere di tipo SECBUFFER_TOKEN e contenere il token di sicurezza ricevuto dal client. Il secondo buffer deve essere di tipo SECBUFFER_EMPTY.

fContextReq

Flag di bit che specificano gli attributi richiesti dal server per stabilire il contesto.

Vedere AcceptSecurityContext: fContextReq per un elenco completo dei valori dei parametri.

TargetDataRep

Rappresentazione dei dati, ad esempio l'ordinamento dei byte, nella destinazione. Questo parametro può essere SECURITY_NATIVE_DREP o SECURITY_NETWORK_DREP.

phNewContext

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

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 SspiInitializeSecurityContextAsync. È 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.

Nell'output questo buffer riceve un token per il contesto di sicurezza asincrono. Il token deve essere inviato al client. La funzione può anche restituire un buffer di tipo SECBUFFER_EXTRA.

pfContextAttr

Puntatore a un set di flag di bit che indicano gli attributi del contesto stabilito.

Vedere AcceptSecurityContext: pfContextAttr per le descrizioni degli attributi.

ptsExpiry

Puntatore a una struttura TimeStamp che riceve l'ora di scadenza del contesto.

Vedere AcceptSecurityContext: ptsExpiry.

Valore restituito

Restituisce SEC_E_OK se la richiesta asincrona per stabilire un contesto di sicurezza è stata accodata correttamente per l'esecuzione. In caso contrario, restituisce l'errore generato durante il tentativo di accodarlo. Per recuperare lo stato dell'operazione, usare SspiGetAsyncCallStatus.

Se il contesto di sicurezza ricevuto dal client è stato accettato, SspiGetAsyncCallStatus restituisce SEC_E_OK o uno dei codici SSPI nella tabella seguente. In caso contrario, può restituire SEC_I_ASYNC_CALL_PENDING se la chiamata è ancora in corso o uno dei codici di errore irreversibili seguenti nella seconda tabella seguente.

Codice restituito
Descrizione
SEC_E_INCOMPLETE_MESSAGE
0x80090318L
La funzione ha avuto esito positivo. I dati nel buffer di input sono incompleti. L'applicazione deve leggere dati aggiuntivi dal client e chiamare di nuovo SspiAcceptSecurityContextAsync.
SEC_I_COMPLETE_AND_CONTINUE
0x00090314L
La funzione ha avuto esito positivo. Il server deve chiamare CompleteAuthToken e passare il token di output al client. Il server deve quindi attendere un token restituito dal client prima di effettuare un'altra chiamata a SspiAcceptSecurityContextAsync.
SEC_I_COMPLETE_NEEDED
0x00090313L
La funzione ha avuto esito positivo. Il server deve completare la compilazione del messaggio dal client prima di chiamare CompleteAuthToken.
SEC_I_CONTINUE_NEEDED
0x00090312L
La funzione ha avuto esito positivo. Il server deve inviare il token di output al client e attendere un token restituito. Il token restituito deve essere passato in pInput per un'altra chiamata a SspiAcceptSecurityContextAsync.

Codici di errore irreversibili

Codice restituito
Descrizione
SEC_E_INSUFFICIENT_MEMORY
0x80090300L
La funzione non è riuscita. Memoria insufficiente per completare l'azione richiesta.
SEC_E_INTERNAL_ERROR
0x80090304L
La funzione non è riuscita. Si è verificato un errore che non è stato mappato a un codice di errore SSPI.
SEC_E_INVALID_HANDLE
0x80100003L
La funzione non è riuscita. L'handle passato alla funzione non è valido.
SEC_E_INVALID_TOKEN
0x80090308L
La funzione non è riuscita. Il token passato alla funzione non è valido.
SEC_E_LOGON_DENIED
0x8009030CL
Accesso non riuscito.
SEC_E_NO_AUTHENTICATING_AUTHORITY
0x80090311L
La funzione non è riuscita. Non è stato possibile contattare alcuna autorità per l'autenticazione. Ciò potrebbe essere dovuto alle condizioni seguenti:
  • Il nome di dominio della parte di autenticazione non è corretto.
  • Il dominio non è disponibile.
  • La relazione di trust non è riuscita.
SEC_E_NO_CREDENTIALS
0x8009030EL
La funzione non è riuscita. Il credenziali handle specificato nel parametro phCredential non è valido.
SEC_E_UNSUPPORTED_FUNCTION
0x80090302L
La funzione non è riuscita. Il parametro fContextReq ha specificato un flag di attributo di contesto (ASC_REQ_DELEGATE o ASC_REQ_PROMPT_FOR_CREDS) non valido.

Osservazioni

La funzione SspiAcceptSecurityContextAsync è la controparte server della funzione SspiInitializeSecurityContextAsync.

Il chiamante è responsabile della determinazione se gli attributi di contesto finali sono sufficienti. Ad esempio, se è stata richiesta la riservatezza (crittografia) ma non è stato possibile stabilire, alcune applicazioni possono scegliere di arrestare immediatamente la connessione. Se non è possibile stabilire il contesto di sicurezza, il server deve liberare il contesto parzialmente creato chiamando la funzione SspiDeleteSecurityContextAsync.

Per altre osservazioni, vedere AcceptSecurityContext.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10, versione 1607 [solo driver in modalità kernel]
server minimo supportato Windows Server 2016 [solo driver in modalità kernel]
intestazione sspi.h

Vedere anche

AcceptSecurityContext

requisiti di contesto

ImpersonateSecurityContext

SspiAcquireCredentialsHandleAsync

SspiDeleteSecurityContextAsync

SspiGetAsyncCallStatus