Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 descripteur de jeton.
Syntaxe
BOOL ImpersonateLoggedOnUser(
[in] HANDLE hToken
);
Paramètres
[in] hToken
Handle vers un jeton d’accès principal ou emprunt d’identité qui représente un utilisateur connecté. Il peut s’agir d’un handle de jeton retourné par un appel à LogonUser, CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken ou OpenThreadToken. Si hToken est un handle vers un jeton principal, le jeton doit avoir TOKEN_QUERY et TOKEN_DUPLICATE accès. Si hToken est un handle vers un jeton d’emprunt d’identité, le jeton doit avoir TOKEN_QUERY et TOKEN_IMPERSONATE accès.
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’erreur étendues, 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 hautement privilégié, tel que LocalSystem ou membre d’un groupe d’administration, l’utilisateur peut être en mesure d’effectuer des actions qu’il serait autrement interdit. Par conséquent, il est important de toujours vérifier la valeur de retour de l’appel et, en cas d’échec, déclencher une erreur ; ne continuez pas l’exécution de la requête cliente.
Toutes les fonctions d’emprunt d’identité, y compris ImpersonateLoggedOnUser , autorisent l’emprunt d’identité demandé si l’une des valeurs suivantes est vraie :
- 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.
Important
Le jeton doit avoir un niveau d’emprunt d’identité de SecurityImpersonation ou supérieur pour que l’emprunt d’identité réussisse. Les jetons avec des niveaux SecurityIdentification ou SecurityAnonymous ne peuvent pas être utilisés pour l’emprunt d’identité, même si l’appelant a SeImpersonatePrivilege. Les jetons SecurityIdentification autorisent la vérification d’identité et les vérifications de liste de contrôle d’accès, mais n’autorisent pas l’emprunt d’identité.
Exigences de niveau d’emprunt d’identité
Le comportement varie en fonction du niveau d’emprunt d’identité du jeton :
- SecurityAnonymous : le serveur ne peut pas obtenir les informations d’identité du client et ne peut pas emprunter l’identité du client.
- SecurityIdentification : le serveur peut obtenir l’identité du client et effectuer la validation d’accès, mais ne peut pas emprunter l’identité du client. Il s’agit du niveau par défaut pour de nombreux scénarios.
- SecurityImpersonation : le serveur peut emprunter l’identité du contexte de sécurité du client sur le système local. Il s’agit du niveau minimal requis pour que ImpersonateLoggedOnUser réussisse.
- SecurityDelegation : le serveur peut emprunter l’identité du client sur des systèmes distants, ainsi que localement.
Windows XP avec SP1 et versions antérieures : Le privilège SeImpersonatePrivilege n’est pas pris en charge.
Pour plus d’informations sur l’emprunt d’identité, consultez Emprunt d’identité du client.
Spécifications
| Requirement | Valeur |
|---|---|
| Client minimum requis | Windows XP [applications de bureau uniquement] |
| Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
| plateforme cible | Fenêtres |
| Header | securitybaseapi.h (include Windows.h) |
| Library | Advapi32.lib |
| DLL | Advapi32.dll |
Voir aussi
Fonctions de contrôle d’accès client/serveur