RpcImpersonateClient, fonction (rpcdce.h)

Un thread serveur qui traite les appels de procédure distante du client peut appeler la fonction RpcImpersonateClient pour emprunter l’identité du client actif.

Syntaxe

RPC_STATUS RpcImpersonateClient(
  RPC_BINDING_HANDLE BindingHandle
);

Paramètres

BindingHandle

Handle de liaison sur le serveur qui représente une liaison à un client. Le serveur emprunte l’identité du client indiqué par ce handle. Si la valeur zéro est spécifiée, le serveur emprunte l’identité du client pris en charge par ce thread de serveur.

Valeur retournée

Valeur Signification
RPC_S_OK
L’appel a réussi.
RPC_S_NO_CALL_ACTIVE
Aucun client n’est actif sur ce thread de serveur.
RPC_S_CANNOT_SUPPORT
La fonction n’est pas prise en charge pour le système d’exploitation, le transport ou ce sous-système de sécurité.
RPC_S_INVALID_BINDING
Le handle de liaison n’était pas valide.
RPC_S_WRONG_KIND_OF_BINDING
Il s’agissait du mauvais type de liaison pour l’opération.
RPC_S_NO_CONTEXT_AVAILABLE
Le serveur n’est pas autorisé à emprunter l’identité du client.
 
Note Pour obtenir la liste des codes d’erreur valides, consultez Valeurs de retour RPC.
 

Notes

Dans une application multithread, si l’appel à RpcImpersonateClient est avec un handle vers un autre thread client, vous devez appeler RpcRevertToSelfEx avec le handle vers ce thread pour mettre fin à l’emprunt d’identité.

Toutes les fonctions qui empruntent l’identité case activée pour déterminer si l’appelant de cette fonction (le serveur RPC) dispose du privilège SeImpersonatePrivilege. Si l’appelant a le SeImpersonatePrivilege, ou si l’identité authentifiée est identique à l’identité de l’appelant de cette fonction, l’emprunt d’identité demandé est autorisé. Sinon, l’emprunt d’identité réussit au niveau De l’identification uniquement.

Windows XP/2000/NT : Le privilège SeImpersonatePrivilege n’est pas pris en charge tant que Windows XP avec Service Pack 2 (SP2).

Remarques sur la sécurité

Si l’appel à RpcImpersonateClient échoue pour une raison quelconque, 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 requête du client.

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête rpcdce.h
Bibliothèque Rpcrt4.lib
DLL Rpcrt4.dll

Voir aussi

Emprunt d'identité de client

RpcRevertToSelf