La fonction LsaLookupSids peut renvoyer l’ancien nom d’utilisateur au lieu du nouveau nom d’utilisateur si le nom d’utilisateur a été modifié

Cet article décrit un délai de mise à jour du cache dans Windows.

Version du produit d’origine :   Windows 7 Service Pack 1
Numéro de la base de connaissances initiale :   946358

Symptômes

Prenons l’exemple du scénario suivant :

  • Sur l’ordinateur membre du domaine, une application appelle la fonction LsaLookupSids pour traduire un identificateur de sécurité (SID) en un nom d’utilisateur.
  • Le nom d’utilisateur a été modifié sur un contrôleur de domaine.

Dans ce scénario, la fonction LsaLookupSids peut renvoyer l’ancien nom d’utilisateur au lieu du nouveau nom d’utilisateur. Ce comportement peut empêcher l’application de fonctionner correctement.

Cause

L’autorité de sécurité locale (LSA) met en cache le mappage entre le SID et le nom d’utilisateur dans un cache local sur l’ordinateur membre du domaine. Le nom d’utilisateur mis en cache n’est pas synchronisé avec les contrôleurs de domaine. L’autorité LSA sur l’ordinateur membre du domaine interroge d’abord le cache SID local. Si un mappage existant se trouve déjà dans le cache SID local, le LSA renvoie les informations de nom d’utilisateur mises en cache au lieu d’interroger les contrôleurs de domaine. Ce comportement est destiné à améliorer les performances.

Les entrées du cache expirent, toutefois il est probable que les requêtes périodiques effectuées par les applications maintiennent l’entrée de cache active pendant la durée de vie maximale de l’entrée de cache.

Solution de contournement

Pour contourner ce problème, désactivez le cache SID local sur l’ordinateur membre du domaine. Pour cela, procédez comme suit :

  1. Ouvrez l’Éditeur du Registre.

    Pour effectuer cette opération dans Windows XP ou Windows Server 2003, cliquez sur Démarrer, sur exécuter, tapez regedit, puis cliquez sur OK.

    Pour effectuer cette opération dans Windows Vista et les versions ultérieures, cliquez sur Démarrer, tapez regedit dans la zone lancer la recherche , puis appuyez sur entrée.

  2. Recherchez, puis cliquez avec le bouton droit sur la sous-clé de Registre suivante : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

  3. Pointez sur nouveau, puis cliquez sur valeur DWORD.

  4. Tapez LsaLookupCacheMaxSize, puis appuyez sur entrée.

  5. Cliquez avec le bouton droit sur LsaLookupCacheMaxSize, puis cliquez sur modifier.

  6. Dans la zone données de la valeur , tapez 0, puis cliquez sur OK.

  7. Fermez l’Éditeur du Registre.

Notes

L’entrée de Registre LsaLookupCacheMaxSize définit le nombre maximal de mappages mis en cache pouvant être enregistrés dans le cache SID local. Le nombre maximal par défaut est 128. Lorsque l’entrée de Registre LsaLookupCacheMaxSize est définie sur 0, le cache SID local est désactivé.

Statut

Le comportement est dû à la conception.

Informations supplémentaires

L’autorité LSA gère un cache SID sur les ordinateurs membres du domaine. Ce cache stocke les mappages entre les SID et les noms d’utilisateur. Si les informations SID existent dans le cache local, le LSA renvoie les informations de nom d’utilisateur mises en cache au lieu de vérifier si le nom d’utilisateur a été modifié.

Le cache SID local permet de réduire la charge de travail du contrôleur de domaine et le trafic réseau. Toutefois, une incohérence peut se produire entre le cache local et les contrôleurs de domaine.

Références

TechNet est doté d’un article qui traite des approches de résolution de noms SID, notamment une description détaillée de ce cache :

Comment les SID et les noms de compte peuvent-ils être mappés dans Windows ?

Pour plus d’informations sur la fonction LsaLookupSids, reportez-vous au site Web de Microsoft suivant :

Fonction LsaLookupSids