Funzione ImpersonateSecurityContext (sspi.h)
La funzione ImpersonateSecurityContext consente a un server di rappresentare un client usando un token ottenuto in precedenza da una chiamata a AcceptSecurityContext (Generale) o QuerySecurityContextToken. Questa funzione consente al server applicazioni di agire come client e quindi vengono applicati tutti i controlli di accesso necessari.
Sintassi
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY ImpersonateSecurityContext(
[in] PCtxtHandle phContext
);
Parametri
[in] phContext
Handle del contesto da rappresentare. Questo handle deve essere stato ottenuto da una chiamata alla funzione AcceptSecurityContext (General).
Valore restituito
Se la funzione ha esito positivo, la funzione restituisce SEC_E_OK.
Se la funzione ha esito negativo, restituisce il codice di errore seguente.
Codice restituito | Descrizione |
---|---|
|
L'handle passato alla funzione non è valido. |
|
Impossibile rappresentare il client. |
|
Questo valore viene restituito dalla modalità kernel Schannel per indicare che questa funzione non è supportata. |
Commenti
L'applicazione server chiama la funzione ImpersonateSecurityContext quando deve rappresentare il client. Prima di eseguire questa operazione, il server deve avere ottenuto un handle di contesto valido. Per ottenere l'handle di contesto, il server deve chiamare AcceptSecurityContext (Generale) per inviare il token di sicurezza in ingresso del client al sistema di sicurezza. Il server ottiene un handle di contesto se il contesto in ingresso viene convalidato. La funzione crea un token di rappresentazione e consente l'esecuzione del thread o del processo con il contesto di rappresentazione.
Quando si usa il provider di supporto per la sicurezza SCHANNEL, l'applicazione server deve passare il flag di ASC_REQ_MUTUAL_AUTH quando si chiama AcceptSecurityContext (Generale). Ciò garantisce che al client venga richiesto un certificato client durante l'handshake SSL/TLS. Quando viene ricevuto un certificato client, il pacchetto Schannel verifica il certificato client e tenta di eseguirne il mapping a un account utente. Quando il mapping ha esito positivo, viene creato un token utente client e questa funzione ha esito positivo.
Il server applicazioni deve chiamare la funzione RevertSecurityContext al termine o quando deve ripristinare il proprio contesto di sicurezza.
ImpersonateSecurityContext non è disponibile con tutti i pacchetti di sicurezza in tutte le piattaforme. In genere, viene implementato solo su piattaforme e con pacchetti di sicurezza che supportano la rappresentazione. Per sapere se un pacchetto di sicurezza supporta la rappresentazione, chiamare la funzione QuerySecurityPackageInfo .
- Il livello di rappresentazione richiesto del token è minore di SecurityImpersonation, ad esempio SecurityIdentification o SecurityAnonymous.
- Il chiamante ha il privilegio SeImpersonatePrivilege .
- Un processo (o un altro processo nella sessione di accesso del chiamante) ha creato il token usando credenziali esplicite tramite la funzione LogonUser o LsaLogonUser .
- L'identità autenticata corrisponde al chiamante.
Windows XP: Il privilegio SeImpersonatePrivilege non è supportato fino a quando Windows XP con Service Pack 2 (SP2).
Requisiti
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | sspi.h (include Security.h) |
Libreria | Secur32.lib |
DLL | Secur32.dll |