Partager via


Fonction SeImpersonateClientEx (ntifs.h)

La routine SeImpersonateClientEx entraîne l’emprunt d’identité d’un utilisateur par un thread.

Syntaxe

NTSTATUS SeImpersonateClientEx(
  [in]           PSECURITY_CLIENT_CONTEXT ClientContext,
  [in, optional] PETHREAD                 ServerThread
);

Paramètres

[in] ClientContext

Pointeur vers le contexte client de sécurité de l’utilisateur.

[in, optional] ServerThread

Pointeur vers le thread qui doit emprunter l’identité de l’utilisateur. S’il n’est pas spécifié, le thread appelant est utilisé.

Valeur retournée

SeImpersonateClientEx retourne une valeur NTSTATUS appropriée, telle que :

Code de retour Description
STATUS_SUCCESS
La tentative d’emprunt d’identité a réussi.
STATUS_ACCESS_DENIED
Le thread spécifié dans le paramètre ServerThread ne disposait pas de droits d’accès suffisants pour emprunter l’identité de l’utilisateur dont le contexte client de sécurité est spécifié dans le paramètre ClientContext .
STATUS_NO_MEMORY
SeImpersonateClientEx a rencontré un échec d’allocation de pool lors de l’allocation de mémoire pour la structure d’informations d’emprunt d’identité.

Remarques

SeImpersonateClientEx est utilisé pour qu’un thread emprunte l’identité d’un utilisateur. Le contexte de sécurité du client dans ClientContext est supposé être à jour.

Il est extrêmement dangereux de déclencher l’état des privilèges d’un thread utilisateur non approuvé (prendre le thread d’un utilisateur et emprunter l’identité de LocalSystem, par exemple). Si un thread d’utilisateur non approuvé a son privilège déclenché, l’utilisateur peut récupérer le jeton de thread une fois qu’il a été élevé et compromettre la sécurité de l’ensemble du système.

Dans les cas où un état de privilège supérieur est requis, la tâche doit être distribuée dans une file d’attente de travail où la tâche peut être gérée en toute sécurité par le thread de travail système. De cette façon, aucune emprunt d’identité n’est nécessaire.

Pour mettre fin à l’emprunt d’identité de l’utilisateur, appelez la routine SeStopImpersonatingClient .

La routine PsImpersonateClient peut être utilisée pour amener un thread de serveur à emprunter l’identité d’un client.

Pour plus d’informations sur la sécurité et le contrôle d’accès, consultez Modèle de sécurité Windows pour les développeurs de pilotes et la documentation sur ces rubriques dans le Kit de développement logiciel (SDK) Windows.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000
Plateforme cible Universal
En-tête ntifs.h (inclure Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Voir aussi

PsImpersonateClient

SeCreateClientSecurity

SeCreateClientSecurityFromSubjectContext

SeStopImpersonatingClient