Partager via


Emprunt d’identité d’un client de canal nommé

L’emprunt d’identité est la capacité d’un thread à s’exécuter dans un contexte de sécurité différent de celui du processus propriétaire du thread. L’emprunt d’identité permet au thread serveur d’effectuer des actions pour le compte du client, mais dans les limites du contexte de sécurité du client. Le client dispose généralement d’un niveau de droits d’accès inférieur. Pour plus d’informations, consultez Emprunt d’identité.

Un thread de serveur de canal nommé peut appeler la fonction ImpersonateNamedPipeClient pour supposer le jeton d’accès de l’utilisateur connecté à l’extrémité cliente du canal. Par exemple, un serveur de canal nommé peut fournir l’accès à une base de données ou à un système de fichiers auquel le serveur de canal dispose d’un accès privilégié. Lorsqu’un client de canal envoie une requête au serveur, celui-ci emprunte l’identité du client et tente d’accéder à la base de données protégée. Le système accorde ou refuse ensuite l’accès au serveur, en fonction du niveau de sécurité du client. Une fois le serveur terminé, il utilise la fonction RevertToSelf pour restaurer son jeton de sécurité d’origine.

Le niveau d’emprunt d’identité détermine les opérations que le serveur peut effectuer lors de l’emprunt d’identité du client. Par défaut, un serveur emprunte l’identité au niveau de l’emprunt d’identité SecurityImpersonation. Toutefois, lorsque le client appelle la fonction CreateFile pour ouvrir un handle à l’extrémité du client du canal, le client peut utiliser l’indicateur SECURITY_SQOS_PRESENT pour contrôler le niveau d’emprunt d’identité du serveur.