Symptômes
Prenons l’exemple du scénario suivant :
-
Un administrateur a authentification basée sur les formulaires (FBA) configurée dans Microsoft Forefront Threat Management Gateway (TMG) 2010.
-
L’attribut de nom unique (DN) d’un utilisateur contient une barre oblique (/) et un caractère spécial défini par Active Directory Lightweight LDAP Directory Access Protocol.
-
L’utilisateur essaie de modifier son mot de passe.
Dans ce scénario, la modification du mot de passe échoue et l’utilisateur reçoit le message d’erreur générique suivant :
Le nom de l’utilisateur ou l’ancien mot de passe n’est pas valide, soit le nouveau mot de passe ne répond pas aux exigences de complexité minimales. Essayez à nouveau.
En outre, le traçage dans TMG 2010 peut indiquer que ADsOpenObject a échoué avec 0 x 80005000 (E_ADS_BAD_PATHNAME) ou 0x80072032 (ERROR_DS_INVALID_DN_SYNTAX), car la séquence d’échappement les caractères spéciaux dans la requête LDAP.
Cause
Ce problème se produit pour n’importe quel compte d’utilisateur Active Directory dont l’attribut de nom de domaine contient un caractère spécial d’Active Directory et un caractère de barre oblique.
Résolution
Pour résoudre ce problème, installez le correctif cumulatif 4 pour Forefront Threat Management Gateway 2010 Service Pack 2 après avoir appliqué cette mise à jour, vous pouvez configurer Threat Management Gateway pour utiliser l’attribut objectGUID au lieu de la DistinguishedName attribut de chemin d’accès Active Directory LDAP pour résoudre le problème qui est décrit dans cet article. Pour activer cette fonctionnalité, procédez comme suit :
-
Copiez et collez le script suivant dans le bloc-notes puis l’enregistrer en utilisant le nom de fichier « EnableKB2888619.vbs » :
set curArray = CreateObject("FPC.Root").GetContainingArray()Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEABC}"Const SE_VPS_NAME = "UseObjectGUIDInLDAPADsPath"Const SE_VPS_VALUE = 1Sub SetValue()' Create the root obect.Dim root ' The FPCLib.FPC root objectSet root = CreateObject("FPC.Root")'Declare the other objects needed.Dim array ' An FPCArray objectDim VendorSets ' An FPCVendorParametersSets collectionDim VendorSet ' An FPCVendorParametersSet object' Obtain references to the array object' and the network rules collection.Set array = curArray Set VendorSets = array.VendorParametersSetsOn Error Resume NextSet VendorSet = VendorSets.Item( SE_VPS_GUID )If Err.Number <> 0 ThenErr.Clear' Add the itemSet VendorSet = VendorSets.Add( SE_VPS_GUID )CheckErrorWScript.Echo "New VendorSet added... " & VendorSet.NameElseWScript.Echo "Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME)End IfIf VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE ThenErr.ClearVendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUEIf Err.Number <> 0 ThenCheckErrorElseVendorSets.Save false, trueCheckErrorIf Err.Number = 0 ThenWScript.Echo "Done with " & SE_VPS_NAME & ", saved!"End IfEnd IfElseWScript.Echo "Done with " & SE_VPS_NAME & ", no change!"End IfEnd SubSub CheckError()If Err.Number <> 0 ThenWScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.DescriptionErr.ClearEnd IfEnd SubSetValue
-
Exécutez le script sur l’un des membres du groupe de Threat Management Gateway. La modification du script prendront effet lors de la synchronisation de la configuration de la passerelle de gestion des menaces. Aucun redémarrage du service pare-feu n’est nécessaire pour que la modification soit prise en compte.
-
Pour annuler la modification et revenir au comportement d’origine, recherchez la ligne suivante dans le script :
Const SE_VPS_VALUE = 1
-
Modifiez cette ligne comme suit :
Const SE_VPS_VALUE = 0
-
Enregistrez le script et puis exécuter le script sur l’un des membres du groupe.
Solution de contournement
Pour contourner ce problème, supprimez la barre oblique ou le caractère spécial de Active Directory à partir de l’attribut de nom unique de l’utilisateur.
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.
Informations supplémentaires
Les caractères spéciaux d’échappement dans les attributs Active Directory sont les suivantes :
-
Virgule ()
-
La barre oblique inverse (\)
-
Signe dièse (#)
-
Signe plus (+)
-
Inférieur à (<) de connexion
-
Supérieur à)
-
Point-virgule ( ;)
-
Guillemet (")
-
Signe égal (=)
-
Espaces à gauche ou
Exemple d’attributs du compte utilisateur :
sAMAccountName : JeffSmithdisplayName : Smith, Jeff / TMGdistinguishedName : CN = Smith\, Jeff / TMG, unité d’organisation = Support, DC = Fabrikam, DC = comRemarques
-
Le caractère d’échappement barre oblique inverse (\) est automatiquement ajouté pour le nom de domaine.
-
L’attribut distinguishedName pour ce compte d’utilisateur contient à la fois la virgule de caractère spécial d’Active Directory (,) et la barre oblique (/).
Références
Pour plus d’informations, consultez les rubriques suivantes :
Voir la terminologie Microsoft utilise pour décrire les mises à jour logicielles.