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.
Windows XP con SP1 e versioni precedenti: Il privilegio SeImpersonatePrivilege non è supportato.

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

Panoramica Controllo di accesso client/server

Createprocessasuser

CreateRestrictedToken

DuplicateToken

DuplicateTokenEx

Logonuser

OpenProcessToken

OpenThreadToken

Reverttoself