Emprunt d'identité

L’emprunt d’identité est la capacité d’un thread à s’exécuter dans un contexte de sécurité différent du contexte du processus propriétaire du thread. Lors de l’exécution dans le contexte de sécurité du client, le serveur « est » le client, dans une certaine mesure. Le thread de serveur utilise un jeton d’accès représentant les informations d’identification du client pour obtenir l’accès aux objets auxquels le client a accès.

La raison principale de l’emprunt d’identité est d’entraîner l’exécution de vérifications d’accès par rapport à l’identité du client. L’utilisation de l’identité du client pour les vérifications d’accès peut entraîner la restriction ou l’extension de l’accès, selon ce que le client est autorisé à faire. Par exemple, supposons qu’un serveur de fichiers possède des fichiers contenant des informations confidentielles et que chacun de ces fichiers soit protégé par une liste de contrôle d’accès. Pour empêcher un client d’obtenir un accès non autorisé aux informations contenues dans ces fichiers, le serveur peut emprunter l’identité du client avant d’accéder aux fichiers.

Jetons d’accès pour l’emprunt d’identité

Les jetons d’accès sont des objets qui décrivent le contexte de sécurité d’un processus ou d’un thread. Ils fournissent des informations qui incluent l’identité d’un compte d’utilisateur et un sous-ensemble des privilèges disponibles pour le compte d’utilisateur. Chaque processus a un jeton d’accès principal qui décrit le contexte de sécurité du compte d’utilisateur associé au processus. Par défaut, le système utilise le jeton principal lorsqu’un thread du processus interagit avec un objet sécurisable. Toutefois, lorsqu’un thread emprunte l’identité d’un client, le thread d’emprunt d’identité a à la fois un jeton d’accès principal et un jeton d’emprunt d’identité. Le jeton d’emprunt d’identité représente le contexte de sécurité du client, et ce jeton d’accès est celui utilisé pour les vérifications d’accès pendant l’emprunt d’identité. Lorsque l’emprunt d’identité est terminé, le thread revient à utiliser uniquement le jeton d’accès principal.

Vous pouvez utiliser la fonction OpenProcessToken pour obtenir un handle au jeton principal d’un processus. Utilisez la fonction OpenThreadToken pour obtenir un handle pour le jeton d’emprunt d’identité d’un thread.

Jetons d’accès

Délégation et emprunt d’identité