Sintomas
Considere o seguinte cenário:
-
Um administrador tem baseada em formulários (FBA) uma configuração de autenticação no Microsoft Forefront ameaça Management Gateway (TMG) 2010.
-
O atributo de nome distinto (DN) para um usuário contém uma barra (/) e um caractere especial definidas pelo Active Directory Lightweight Directory Access Protocol LDAP.
-
O usuário tenta alterar a senha.
Nesse cenário, a alteração de senha não for bem-sucedida e o usuário recebe a seguinte mensagem de erro genérico:
O nome de usuário ou senha antiga não é válida ou a nova senha não atende aos requisitos mínimos de complexidade. Por favor, tente novamente.
Além disso, o rastreamento na TMG 2010 pode indicar ADsOpenObject falha com 0x80005000 (E_ADS_BAD_PATHNAME) ou 0x80072032 (ERROR_DS_INVALID_DN_SYNTAX) porque o escape de caractere especial na solicitação de LDAP.
Motivo
Este problema ocorre para qualquer conta de usuário do Active Directory para os quais o atributo DN contém um caractere especial do Active Directory e um caractere de barra invertida.
Resolução
Para resolver esse problema, instale o pacote cumulativo de atualizações 4 para Forefront ameaça Management Gateway 2010 Service Pack 2. depois de aplicar essa atualização, você pode configurar Threat Management Gateway para usar o atributo objectGUID em vez de DistinguishedName atributo no caminho LDAP do Active Directory para resolver o problema descrito neste artigo. Para habilitar esta funcionalidade, siga estas etapas:
-
Copie e cole o seguinte script no bloco de notas e salve-o com o nome "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
-
Execute o script em um dos membros da matriz Threat Management Gateway. A alteração de script entrará em vigor quando a configuração de Threat Management Gateway sincroniza. Não reiniciar o serviço Firewall é necessário para que a alteração tenha efeito.
-
Para reverter as alterações e retornar para o comportamento original, localize a seguinte linha no script:
Const SE_VPS_VALUE = 1
-
Altere essa linha da seguinte maneira:
Const SE_VPS_VALUE = 0
-
Salve o script e, em seguida, execute o script em um dos membros da matriz.
Solução alternativa
Para contornar esse problema, remova a barra ou o caractere especial do Active Directory do atributo DN do usuário.
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Informações adicionais
Escapados caracteres especiais nos atributos do Active Directory são as seguintes:
-
Vírgula (,)
-
Barra invertida (\)
-
Sinal de número (#)
-
Sinal de adição (+)
-
Menor que (<)
-
Maior que)
-
Ponto e vírgula (;)
-
Aspas (' ')
-
Sinal de igual (=)
-
Espaços à direita ou
Exemplo de atributos de conta de usuário:
sAMAccountName: JeffSmithdisplayName: Jeff Smith / TMGdistinguishedName: CN = Smith\, Jeff / TMG, UO = suporte, DC = Fabrikam, DC = comObservações
-
O caractere de escape de barra invertida (\) é adicionado automaticamente para o DN.
-
O atributo distinguishedName para esta conta de usuário contém vírgula de caractere especial do Active Directory (,) e a barra (/).
Referências
Para obter mais informações, consulte o seguinte:
Consulte a terminologia Microsoft usa para descrever as atualizações de software.