ИСПРАВЛЕНИЕ. Изменение пароля не выполняется, если атрибут DN пользователя содержит косую черту и специальный символ, определенный LDAP Active Directory в Forefront Threat Management Gateway 2010

Применяется к
Forefront Threat Management Gateway 2010 Enterprise Forefront Threat Management Gateway 2010 Standard

Проблема

Рассмотрим следующий сценарий.

  • Администратор настроил проверку подлинности на основе форм (FBA) в Microsoft Forefront Threat Management Gateway (TMG) 2010.
  • Атрибут различающегося имени (DN) для пользователя содержит косую черту (/) и специальный символ, определенный протоколом LDAP Active Directory.
  • Пользователь пытается изменить свой пароль.

        
В этом сценарии изменение пароля не выполняется, и пользователь получает следующее общее сообщение об ошибке:

Примечание

Либо имя пользователя, либо старый пароль недопустимы, либо новый пароль не соответствует минимальным требованиям к сложности. Повторите попытку.

Кроме того, трассировка в TMG 2010 может указывать на сбой ADsOpenObject с 0x80005000 (E_ADS_BAD_PATHNAME) или 0x80072032 (ERROR_DS_INVALID_DN_SYNTAX), так как специальный символ в запросе LDAP экранирован.

Причина

Эта проблема возникает для любой учетной записи пользователя Active Directory, для которой атрибут DN содержит специальный символ Active Directory и символ косой черты.

Решение

Чтобы устранить эту проблему, установите накопительный пакет обновления 4 для Forefront Threat Management Gateway 2010 с пакетом обновления 2 (SP2).

После применения этого обновления можно настроить шлюз управления угрозами для использования атрибута objectGUID вместо атрибута Различающееся имя в пути LDAP Active Directory для устранения проблемы, описанной в этой статье. Чтобы включить эту функцию, выполните следующие действия.

  1. Скопируйте и вставьте следующий скрипт в Блокнот, а затем сохраните его с помощью имени файла 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 = 1
    
    Sub SetValue()
    
    ' Create the root obect.
    Dim root ' The FPCLib.FPC root object
    Set root = CreateObject("FPC.Root")
    
    'Declare the other objects needed.
    Dim array ' An FPCArray object
    Dim VendorSets ' An FPCVendorParametersSets collection
    Dim VendorSet ' An FPCVendorParametersSet object
    
    ' Obtain references to the array object
    ' and the network rules collection.
    Set array = curArray 
    Set VendorSets = array.VendorParametersSets
    
    On Error Resume Next
    Set VendorSet = VendorSets.Item( SE_VPS_GUID )
    
    If Err.Number <> 0 Then
    Err.Clear
    
    ' Add the item
    Set VendorSet = VendorSets.Add( SE_VPS_GUID )
    CheckError
    WScript.Echo "New VendorSet added... " & VendorSet.Name
    
    Else
    WScript.Echo "Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME)
    End If
    
    If VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE Then
    
    Err.Clear
    VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE
    
    If Err.Number <> 0 Then
    CheckError
    Else
    VendorSets.Save false, true
    CheckError
    
    If Err.Number = 0 Then
    WScript.Echo "Done with " & SE_VPS_NAME & ", saved!"
    End If
    End If
    Else
    WScript.Echo "Done with " & SE_VPS_NAME & ", no change!"
    End If
    
    End Sub
    
    Sub CheckError()
    
    If Err.Number <> 0 Then
    WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description
    Err.Clear
    End If
    
    End Sub
    
    SetValue
    
  2. Запустите скрипт на одном из элементов массива шлюза управления угрозами. Изменение скрипта вступит в силу при синхронизации конфигурации шлюза управления угрозами. Для того чтобы изменения вступили в силу, перезапуск службы брандмауэра не требуется.

  3. Чтобы отменить изменения изменения и вернуться к исходному поведению, найдите в скрипте следующую строку:

    Const SE_VPS_VALUE = 1

  4. Измените строку следующим образом:

    Const SE_VPS_VALUE = 0

  5. Сохраните скрипт, а затем запустите его на одном из элементов массива.

      

Временное решение

Чтобы обойти эту проблему, удалите косую черту или специальный символ Active Directory из атрибута DN пользователя.

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».

Дополнительные сведения

Экранированные специальные символы в атрибутах Active Directory:

  • Запятая (,)
  • Обратная косая черта (\)
  • Знак номера (#)
  • Знак "плюс" (+)
  • Знак меньше (<)
  • Знак больше ( )
  • Точка с запятой (;)
  • Кавычка (")
  • Знак равенства (=)
  • Начальные или конечные пробелы

Пример атрибутов учетной записи пользователя:

sAMAccountName: JeffSmith
displayName: Смит, Джефф / TMG
различающееся Имя: CN=Smith\, Jeff / TMG,OU=Support,DC=Fabrikam,DC=com

Заметки

  • Escape-символ обратной косой черты (\) автоматически добавляется в DN.
  • Атрибут различающееся имя для этой учетной записи пользователя содержит как специальные символы Active Directory (,), так и косую черту (/).

      

Ссылки

Дополнительные сведения см. в следующих статьях:

См. терминологию , используемую корпорацией Майкрософт для описания обновлений программного обеспечения.