ИСПРАВЛЕНИЕ. Пользователям предлагается пройти проверку подлинности, если свойству ReturnAuthRequiredIfAuthUserDenied присвоено значение True, а пользователям запрещается доступ по правилу "Все пользователи" в среде Forefront Threat Management Gateway 2010.
Когда Microsoft Forefront Threat Management Gateway (TMG) 2010 отклоняет запрос для пользователя, прошедшего проверку подлинности, пользователь получает сообщение об ошибке "502", информирующее пользователя о том, что ему отказано в доступе. Кроме того, пользователю не предлагается указать альтернативные учетные данные.
Свойство ReturnAuthRequiredIfAuthUserDenied можно задать таким образом, чтобы при отказе пользователя, прошедшего проверку подлинности политикой TMG, пользователь получал сообщение "Требуется проверка подлинности прокси-сервера 407". Это позволяет пользователю предоставлять альтернативные учетные данные.
Дополнительные сведения о свойстве ReturnAuthRequiredIfAuthUserDenied см. на следующем веб-сайте Microsoft Developer Network (MSDN):
Свойство ReturnAuthRequiredIfAuthUserDenied интерфейса IFPCWebListenerProperties Если администратор создает правило запрета, которое применяется ко всем пользователям, и задает свойству ReturnAuthRequiredIfAuthUserDeniedзначение True, пользователь, которому запрещено таким правилом, получает сообщение "Требуется проверка подлинности прокси-сервера 407". Это происходит, даже если это правило запрещает всем пользователям. Это поведение может быть нежелательным и может привести к ненужным запросам проверки подлинности.
Проблема
Такое поведение является стандартным, это не ошибка приложения. Но это поведение может не быть желаемым, так как правило запрета "Все пользователи" блокирует всех пользователей. Кроме того, запросы на альтернативные учетные данные не устраняют эту проблему.
Причина
Чтобы устранить эту проблему, установите обновление программного обеспечения, описанное в следующей статье базы знаний Майкрософт:
2517957 пакет обновления 1 для Пакета обновления 1 для Forefront Threat Management Gateway (TMG) 2010 с пакетом обновления 1(SP1) Выполните скрипт, указанный в разделе "Дополнительные сведения" для одного из элементов массива TMG, чтобы задать для свойства SkipReauthWhenNonDefaultRule значение True.
Решение
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Состояние
В этом обновлении программного обеспечения представлено новое свойство SkipReauthWhenNonDefaultRule. Это свойство обеспечивает новое поведение. Например, рассмотрим следующие сценарии.
Сценарий 1
Администратор создает правило "Все пользователи", которое запрещает доступ пользователю, прошедшему проверку подлинности, а свойство ReturnAuthRequiredIfAuthUserDenied имеет значение True. В этом сценарии, если свойство SkipReauthWhenNonDefaultRule имеет значение True, пользователь получает сообщение об ошибке "502" и не запрашивает альтернативные учетные данные.
Сценарий 2
Применяется правило по умолчанию, и правило отклоняет запрос. Кроме того, свойство ReturnAuthRequiredIfAuthUserDenied имеет значение True. В этом сценарии пользователь получает сообщение "Требуется проверка подлинности прокси-сервера 407", как ожидалось. После применения этого обновления программного обеспечения выполните следующий сценарий для одного из элементов массива TMG, чтобы задать для свойства SkipReauthWhenNonDefaultRule значение True. По умолчанию для свойства SkipReauthWhenNonDefaultRule используется значение False.
Примечание. Этот скрипт изменит поведение, только если свойство ReturnAuthRequiredIfAuthUserDenied также имеет значение True.
Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"
Const SE_VPS_NAME = "SkipReauthWhenNonDefaultRule"
Const SE_VPS_VALUE = true
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
' Get references to the array object
' and the network rules collection.
Set array = root.GetContainingArray
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
Примечание. Чтобы отменить изменения поведение по умолчанию, выполните следующие действия.
Найдите следующую строку в скрипте:
Const SE_VPS_VALUE = trueИзмените строку в скрипте на следующую:
Const SE_VPS_VALUE = falseСохраните скрипт и повторно запустите его на одном из элементов массива TMG.
Дополнительные сведения
Чтобы получить дополнительные сведения о терминологии обновлений программного обеспечения, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
824684 Описание стандартной терминологии, используемой для описания обновлений программного обеспечения Майкрософт