Funzione ImpersonateLoggedOnUser (securitybaseapi.h)
La funzione ImpersonateLoggedOnUser consente al thread chiamante di rappresentare il contesto di sicurezza di un utente connesso. L'utente è rappresentato da un handle di token.
Sintassi
BOOL ImpersonateLoggedOnUser(
[in] HANDLE hToken
);
Parametri
[in] hToken
Handle a un token di accesso primario o di rappresentazione che rappresenta un utente connesso. Questo può essere un handle token restituito da una chiamata a LogonUser, CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken o Le funzioni OpenThreadToken . Se hToken è un handle per un token primario, il token deve avere TOKEN_QUERY e TOKEN_DUPLICATE accesso. Se hToken è un handle per un token di rappresentazione, il token deve avere TOKEN_QUERY e TOKEN_IMPERSONATE accesso.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
La rappresentazione dura fino all'uscita del thread o fino a quando non chiama RevertToSelf.
Il thread chiamante non deve avere privilegi specifici per chiamare ImpersonateLoggedOnUser.
Se la chiamata a ImpersonateLoggedOnUser ha esito negativo, la connessione client non viene rappresentata e la richiesta client viene eseguita nel contesto di sicurezza del processo. Se il processo viene eseguito come account con privilegi elevati, ad esempio LocalSystem o come membro di un gruppo amministrativo, l'utente può essere in grado di eseguire azioni che altrimenti non saranno consentite. Pertanto, è importante controllare sempre il valore restituito della chiamata e, se ha esito negativo, generare un errore; non continuare l'esecuzione della richiesta client.
Tutte le funzioni di rappresentazione, incluse ImpersonateLoggedOnUser , consentono la rappresentazione richiesta se una delle seguenti è true:
- 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 logonUser o LsaLogonUser funzione.
- L'identità autenticata è uguale al chiamante.
Per altre informazioni sulla rappresentazione, vedere Rappresentazione client.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | securitybaseapi.h (include Windows.h) |
Libreria | Advapi32.lib |
DLL | Advapi32.dll |
Vedi anche
Funzioni di Controllo di accesso client/server