CORRECCIÓN: Se pide a los usuarios que se autentiquen cuando la propiedad ReturnAuthRequiredIfAuthUserDenied se establece en True y a los usuarios se les deniega el acceso mediante una regla "Todos los usuarios" en un entorno de Forefront Threat Management Gateway 2010.

Cuando Microsoft Forefront Threat Management Gateway (TMG) 2010 deniega una solicitud a un usuario autenticado, el usuario recibe un mensaje de error "502" para informar al usuario de que se le ha denegado el acceso. Además, no se pide al usuario que proporcione credenciales alternativas.

La propiedad ReturnAuthRequiredIfAuthUserDenied se puede establecer para que cuando la directiva de TMG deniegue a un usuario autenticado, el usuario reciba el mensaje "Se requiere autenticación de proxy 407". Esto permite al usuario proporcionar credenciales alternativas.

Para obtener más información sobre la propiedad ReturnAuthRequiredIfAuthUserDenied , visite el siguiente sitio web de Microsoft Developer Network (MSDN):

ReturnAuthRequiredIfAuthUserDenied (propiedad) de la interfaz IFPCWeb TokenProperties Si un administrador crea una regla de denegación que se aplica a todos los usuarios y establece la propiedad ReturnAuthRequiredIfAuthUserDenied en True, un usuario al que dicha regla deniegue recibirá un mensaje "Se requiere autenticación de proxy 407". Este comportamiento se produce aunque esta regla deniegue a todos los usuarios. Este comportamiento puede no ser deseado y podría provocar solicitudes de autenticación innecesarias.

Síntomas

Este comportamiento está configurado así por el propio diseño. Sin embargo, este comportamiento puede no ser el deseado porque una regla De todos los usuarios deniega a todos los usuarios. Además, las solicitudes de credenciales alternativas no resuelven este problema.

Causa

Para resolver este problema, instale la actualización de software que se describe en el siguiente artículo de Microsoft Knowledge Base:

2517957 Software Update 1 Rollup 4 para Forefront Threat Management Gateway (TMG) 2010 Service Pack 1 Después de aplicar esta actualización de software, ejecute el script que se proporciona en la sección "Más información" de uno de los miembros de matriz TMG para establecer la propiedad SkipReauthWhenNonDefaultRule en True.

Resolución

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Estado

Esta actualización de software presenta una nueva propiedad, SkipReauthWhenNonDefaultRule. Esta propiedad proporciona un comportamiento nuevo. Por ejemplo, tenga en cuenta los siguientes escenarios.

Escenario 1

Un administrador crea una regla Todos los usuarios que deniega el acceso a un usuario autenticado y la propiedad ReturnAuthRequiredIfAuthUserDenied se establece en True. En este escenario, si la propiedad SkipReauthWhenNonDefaultRule se establece en True, el usuario recibirá un mensaje de error "502" y no se le pedirá que proporcione credenciales alternativas.

Escenario 2

Se aplica la regla predeterminada y la regla deniega la solicitud. Además, la propiedad ReturnAuthRequiredIfAuthUserDenied se establece en True. En este escenario, el usuario recibe el mensaje "Se requiere autenticación de proxy 407" según lo esperado. Después de aplicar esta actualización de software, ejecute el script siguiente en uno de los miembros de la matriz TMG para establecer la propiedad SkipReauthWhenNonDefaultRule en True. El valor predeterminado de la propiedad SkipReauthWhenNonDefaultRule es False.

Nota Este script solo cambiará el comportamiento cuando la propiedad ReturnAuthRequiredIfAuthUserDenied también se establezca en 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

Nota Para volver al comportamiento predeterminado, siga estos pasos:

  1. Busque la siguiente línea en el script:

    Const SE_VPS_VALUE = true
    
  2. Cambie la línea del script a la siguiente:

    Const SE_VPS_VALUE = false
    
  3. Guarde el script y vuelva a ejecutar este script en uno de los miembros de matriz TMG.

Más información

Para obtener más información acerca de la terminología relativa a las actualizaciones de software de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

824684 Descripción de la terminología estándar que se usa para describir las actualizaciones de software de Microsoft

Referencias