Partager via


Emprunt d’identité du client (autorisation)

l’emprunt d’identité est la capacité d’un thread à s’exécuter à l’aide d’informations de sécurité différentes du processus propriétaire du thread. En règle générale, un thread dans une application serveur emprunte l’identité d’un client. Cela permet au thread de serveur d’agir pour le compte de ce client d’accéder aux objets sur le serveur ou de valider l’accès aux propres objets du client.

L’API Microsoft Windows fournit les fonctions suivantes pour commencer l’emprunt d’identité :

  • Une application serveur DDE peut appeler la fonction DdeImpersonateClient pour emprunter l’identité d’un client.
  • Un serveur à canal nommé peut appeler la fonction ImpersonateNamedPipeClient.
  • Vous pouvez appeler la fonction ImpersonateLoggedOnUser pour emprunter l’identité du contexte de sécurité d’un utilisateur connecté jeton d’accès.
  • La fonction ImpersonateSelf permet à un thread de générer une copie de son propre jeton d’accès. Cela est utile lorsqu’une application doit modifier le contexte de sécurité d’un thread unique. Par exemple, un seul thread d’un processus doit parfois activer un privilège.
  • Vous pouvez appeler la fonction SetThreadToken pour que le thread cible s’exécute dans le contexte de sécurité d’un jeton d’emprunt d’identité spécifié.
  • Une application serveur RPC (Remote Procedure Call) Microsoft peut appeler la fonction RpcImpersonateClient pour emprunter l’identité d’un client.
  • Un package de sécurité ou un serveur d’applications peut appeler la fonction ImpersonateSecurityContext pour emprunter l’identité d’un client.

Pour la plupart de ces emprunts d’identité, le thread d’emprunt d’identité peut revenir à son propre contexte de sécurité en appelant la fonction RevertToSelf. L’exception est l’emprunt d’identité RPC, dans lequel l’application serveur RPC appelle RpcRevertToSelf ou RpcRevertToSelfEx pour revenir à son propre contexte de sécurité.

Remarque : Si vous empruntez l’identité d’un utilisateur à partir d’un service Win32 et que vous appelez des API qui s’appuient sur des variables d’environnement utilisateur, vous devrez peut-être appeler RegDisablePredefinedCache avant d’emprunter l’identité.