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 |
---|---|
|
L’appel a réussi. |
|
Aucun client n’est actif sur ce thread de serveur. |
|
La fonction n’est pas prise en charge pour le système d’exploitation, le transport ou ce sous-système de sécurité. |
|
Le handle de liaison n’était pas valide. |
|
Il s’agissait du mauvais type de liaison pour l’opération. |
|
Le serveur n’est pas autorisé à emprunter l’identité du client. |
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 |