Síntomas
Imagine la siguiente situación:
-
Un administrador tiene autenticación basada en formularios (FBA) configurada en Microsoft Forefront Threat Management Gateway (TMG) 2010.
-
El atributo de nombre completo (DN) de un usuario contiene una barra diagonal (/) y un carácter especial definido en Active Directory Lightweight Directory Access Protocol LDAP.
-
El usuario intenta cambiar su contraseña.
En este escenario, el cambio de contraseña es correcta y el usuario recibe el siguiente mensaje de error genérico:
El nombre de usuario o la contraseña anterior no es válida o la nueva contraseña no cumple los requisitos mínimos de complejidad. Vuelva a intentarlo.
Además, realizar un seguimiento en TMG 2010 puede indicar que ADsOpenObject falló con 0 x 80005000 (E_ADS_BAD_PATHNAME) o 0x80072032 (ERROR_DS_INVALID_DN_SYNTAX) porque el carácter especial en la solicitud LDAP de escape.
Causa
Este problema se produce para cualquier cuenta de usuario de Active Directory para los que el atributo DN contiene un carácter especial de Active Directory y un carácter de barra diagonal.
Solución
Para resolver este problema, instale el paquete acumulativo de actualizaciones 4 para Forefront Threat Management Gateway 2010 Service Pack 2 después de aplicar esta actualización, puede configurar Threat Management Gateway para utilizar el atributo objectGUID en lugar de la DistinguishedName atributo de ruta de acceso de LDAP de Active Directory para resolver el problema que se describe en este artículo. Para habilitar esta funcionalidad, siga estos pasos:
-
Copie y pegue la siguiente secuencia de comandos en el Bloc de notas y, a continuación, guárdelo con el nombre de archivo "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
-
Ejecute la secuencia de comandos en uno de los miembros de la matriz de Threat Management Gateway. La secuencia de comandos surtirá efecto cuando se sincroniza la configuración de Threat Management Gateway. No hay reinicio del servicio de servidor de seguridad es necesario para que el cambio surta efecto.
-
Para revertir el cambio y volver al comportamiento original, busque la línea siguiente en la secuencia de comandos:
Const SE_VPS_VALUE = 1
-
Cambie esta línea como sigue:
Const SE_VPS_VALUE = 0
-
Guardar la secuencia de comandos y, a continuación, ejecute la secuencia de comandos en uno de los miembros de la matriz.
Solución alternativa
Para evitar este problema, quite la barra diagonal o el carácter especial de Active Directory desde el atributo DN del usuario.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Más información
Caracteres especiales de escape en los atributos de Active Directory son los siguientes:
-
Coma ()
-
Barra diagonal inversa (\)
-
Signo de número (#)
-
Signo más (+)
-
Menor que (<) de inicio de sesión
-
Signo () mayor que
-
Punto y coma (;)
-
Comillas (")
-
Signo de igual (=)
-
Espacios iniciales o finales
Ejemplo de atributos de la cuenta de usuario:
sAMAccountName: JeffSmithdisplayName: Díaz, Carlos / TMGdistinguishedName: CN = Smith\, Jeff / TMG, OU = soporte, DC = Fabrikam, DC = comNotas
-
El carácter de escape barra diagonal inversa (\) se agrega automáticamente a la DN.
-
El atributo distinguishedName para esta cuenta de usuario contiene la coma de carácter especial de Active Directory (,) y la barra diagonal (/).
Referencias
Para obtener más información, consulte lo siguiente:
Véase la terminología que Microsoft utiliza para describir las actualizaciones de software.