Fonction ImpersonateLoggedOnUser (securitybaseapi.h)
La fonction ImpersonateLoggedOnUser permet au thread appelant d’emprunter l’identité du contexte de sécurité d’un utilisateur connecté. L’utilisateur est représenté par un handle de jeton.
Syntaxe
BOOL ImpersonateLoggedOnUser(
[in] HANDLE hToken
);
Paramètres
[in] hToken
Handle vers un jeton d’accès principal ou d’emprunt d’identité qui représente un utilisateur connecté. Il peut s’agir d’un handle de jeton retourné par un appel aux fonctions LogonUser, CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken ou OpenThreadToken . Si hToken est un handle d’un jeton principal, le jeton doit avoir un accès TOKEN_QUERY et TOKEN_DUPLICATE . Si hToken est un handle pour un jeton d’emprunt d’identité, le jeton doit avoir un accès TOKEN_QUERY et TOKEN_IMPERSONATE .
Valeur retournée
Si la fonction réussit, la valeur de retour est différente de zéro.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
L’emprunt d’identité dure jusqu’à ce que le thread se ferme ou qu’il appelle RevertToSelf.
Le thread appelant n’a pas besoin de disposer de privilèges particuliers pour appeler ImpersonateLoggedOnUser.
Si l’appel à ImpersonateLoggedOnUser échoue, la connexion cliente n’est pas empruntée et la demande du client est effectuée dans le contexte de sécurité du processus. Si le processus s’exécute en tant que compte à privilèges élevés, tel que LocalSystem, ou en tant que membre d’un groupe d’administration, l’utilisateur peut être en mesure d’effectuer des actions qu’il ne serait pas autorisé à effectuer. Par conséquent, il est important de toujours case activée la valeur de retour de l’appel et, en cas d’échec, de générer une erreur ; ne poursuivez pas l’exécution de la demande du client.
Toutes les fonctions d’emprunt d’identité, y compris ImpersonateLoggedOnUser , autorisent l’emprunt d’identité demandé si l’une des conditions suivantes est vraie :
- Le niveau d’emprunt d’identité demandé du jeton est inférieur à SecurityImpersonation, par exemple SecurityIdentification ou SecurityAnonymous.
- L’appelant a le privilège SeImpersonatePrivilege .
- Un processus (ou un autre processus dans la session d’ouverture de session de l’appelant) a créé le jeton à l’aide d’informations d’identification explicites via la fonction LogonUser ou LsaLogonUser .
- L’identité authentifiée est identique à l’appelant.
Pour plus d’informations sur l’emprunt d’identité, consultez Emprunt d’identité client.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | securitybaseapi.h (inclure Windows.h) |
Bibliothèque | Advapi32.lib |
DLL | Advapi32.dll |
Voir aussi
Fonctions de Access Control client/serveur