Funzione SspiInitializeSecurityContextAsyncW (sspi.h)
La funzione di SspiInitializeSecurityContextAsyncW avvia il lato client, contesto di sicurezza in uscita da un handle di credenziali. La funzione viene usata per creare un contesto di sicurezza tra l'applicazione client e un peer remoto. SspiInitializeSecurityContextAsyncW restituisce un token che il client deve passare al peer remoto, che a sua volta invia all'implementazione di sicurezza locale tramite la chiamata SspiAcceptSecurityContextAsync.
Nota
Questa funzione funge da controparte asincrona della funzione InitializeSecurityContext.
Sintassi
SECURITY_STATUS SspiInitializeSecurityContextAsyncW(
SspiAsyncContext *AsyncContext,
PCredHandle phCredential,
PCtxtHandle phContext,
PSECURITY_STRING pszTargetName,
unsigned long fContextReq,
unsigned long Reserved1,
unsigned long TargetDataRep,
PSecBufferDesc pInput,
unsigned long Reserved2,
PCtxtHandle phNewContext,
PSecBufferDesc pOutput,
unsigned long *pfContextAttr,
PTimeStamp ptsExpiry
);
Parametri
AsyncContext
Contesto di chiamata asincrona.
phCredential
Handle per le credenziali restituite da AcquireCredentialsHandle. Questo handle viene usato per compilare il contesto di sicurezza .
phContext
Puntatore a una struttura CtxtHandle
pszTargetName
Puntatore a una stringa con terminazione Null che indica la destinazione del contesto. Il contenuto della stringa è pacchetto di sicurezza specifico, come descritto nella tabella seguente. Questo elenco non è esaustivo. È possibile aggiungere provider di servizi di sicurezza di sistema aggiuntivi e provider di servizi di sicurezza di terze parti a un sistema.
fContextReq
Flag di bit che indicano le richieste per il contesto.
Per un elenco dei valori dei flag e dei relativi significati, vedere
Reserved1
Questo parametro è riservato e deve essere impostato su zero.
TargetDataRep
Rappresentazione dei dati, ad esempio l'ordinamento dei byte, nella destinazione. Questo parametro può essere SECURITY_NATIVE_DREP o SECURITY_NETWORK_DREP.
pInput
Puntatore a una struttura secBufferDesc di
Reserved2
Questo parametro è riservato e deve essere impostato su zero.
phNewContext
Puntatore a una struttura CtxtHandle.
pOutput
Puntatore a una struttura SecBufferDesc che contiene puntatori alla struttura SecBuffer che riceve i dati di output.
pfContextAttr
Puntatore a una variabile per ricevere un set di flag di bit che indicano gli attributi del contesto stabilito. Per una descrizione dei vari attributi, vedere requisiti di contesto .
ptsExpiry
facoltativo . Puntatore a una struttura TimeStamp che riceve l'ora di scadenza del contesto.
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 accodamento. Per recuperare lo stato dell'operazione, usare SspiGetAsyncCallStatus.
Se il contesto di sicurezza ricevuto dal server è 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_I_COMPLETE_AND_CONTINUE 0x00090314L |
Il client deve chiamare CompleteAuthToken e passare il token di output al server. Il client attende quindi un token restituito e lo passa, in un'altra chiamata, a SspiInitializeSecurityContextAsyncA. |
SEC_I_COMPLETE_NEEDED 0x00090313L |
Il client deve completare la compilazione del messaggio dal server prima di chiamare CompleteAuthToken. |
SEC_I_CONTINUE_NEEDED 0x00090312L |
Il client deve inviare il token di output al server e attendere un token restituito. Il token restituito viene quindi passato in un'altra chiamata a SspiInitializeSecurityContextAsyncA. Il token di output può essere vuoto. |
SEC_I_INCOMPLETE_CREDENTIALS | Usare con Schannel. Il server ha richiesto l'autenticazione client e le credenziali fornite non includono un certificato o il certificato non è stato emesso da un'autorità di certificazione attendibile dal server. |
SEC_E_INCOMPLETE_MESSAGE 0x80090318L |
I dati per l'intero messaggio non sono stati letti dalla rete. Quando questo valore viene restituito, il buffer pInput contiene una struttura SecBuffer con un membro BufferType di SECBUFFER_MISSING. Il membro cbBuffer di SecBuffer contiene un valore che indica il numero di byte aggiuntivi che la funzione deve leggere dal client prima che questa funzione abbia esito positivo. Anche se questo numero non è sempre accurato, l'uso può contribuire a migliorare le prestazioni evitando più chiamate a questa funzione. |
SEC_E_OK 0x00000000L |
Il contesto di sicurezza ricevuto dal client è stato accettato. Se la funzione ha generato un token di output, il token deve essere inviato al server. |
Codici di errore irreversibili
Codice restituito |
Descrizione |
---|---|
SEC_E_INSUFFICIENT_MEMORY 0x80090300L |
Memoria insufficiente per completare l'azione richiesta. |
SEC_E_INTERNAL_ERROR 0x80090304L |
Si è verificato un errore che non è stato mappato a un codice di errore SSPI. |
SEC_E_INVALID_HANDLE 0x80100003L |
L'handle passato alla funzione non è valido. |
SEC_E_INVALID_TOKEN 0x80090308L |
L'errore è dovuto a un token di input in formato non valido, ad esempio un token danneggiato in transito, un token di dimensioni non corrette o un token passato nel pacchetto di sicurezza errato. Il passaggio di un token al pacchetto errato può verificarsi se il client e il server non hanno negoziato il pacchetto di sicurezza appropriato. |
SEC_E_LOGON_DENIED 0x8009030CL |
Accesso non riuscito. |
SEC_E_NO_AUTHENTICATING_AUTHORITY 0x80090311L |
Non è stato possibile contattare alcuna autorità per l'autenticazione. Il nome di dominio della parte di autenticazione potrebbe non essere corretto, il dominio potrebbe non essere raggiungibile o potrebbe verificarsi un errore di relazione di trust. |
SEC_E_NO_CREDENTIALS 0x8009030EL |
Nessuna credenziale è disponibile nel pacchetto di sicurezza. |
SEC_E_TARGET_UNKNOWN | La destinazione non è stata riconosciuta. |
SEC_E_UNSUPPORTED_FUNCTION 0x80090302L |
Nel parametro fContextReq è stato specificato un flag di attributo di contesto non valido (ISC_REQ_DELEGATE o ISC_REQ_PROMPT_FOR_CREDS). |
SEC_E_WRONG_PRINCIPAL | L'entità che ha ricevuto la richiesta di autenticazione non corrisponde a quella passata al parametro pszTargetName. Ciò indica un errore nell'autenticazione reciproca. |
Osservazioni
Per altre osservazioni, vedere InitializeSecurityContext.
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 |