Problembeschreibung

Betrachten Sie das folgende Szenario:

  • Sie haben einen Server mit Microsoft Forefront Threat Management Gateway (TMG) 2010.

  • TMG Server ist als Webserver konfiguriert.

  • TMG Weblistener verwendet Formularauthentifizierung mit NTLM-Delegierung an den veröffentlichten Webserver.

  • POST-Anfragen an den Webserver TMG gibt.

In diesem Szenario möglicherweise POST-Anfragen. Dadurch können verschiedene Probleme, die abhängig von der Art von POST-Anfragen, die nicht.

Ursache

Dieses Problem tritt auf, wenn die folgenden Bedingungen erfüllt sind:

  • TMG formularbasierte Authentifizierung wird verwendet.

  • NTLM-Delegierung ist in der Veröffentlichungsregel TMG Delegieren der Authentifizierung an den veröffentlichten Webserver konfiguriert.

  • ISA sendet eine Anforderung an den Webserver in einer bereits authentifizierten Verbindung.

  • Der Webserver reagiert mit einer 401.

Wenn NTLM-Delegierung verwendet wird, authentifiziert TMG eine Verbindung zum Webserver bei der ersten Anforderung an den Webserver für diese Verbindung. Die Authentifizierung wird dann für die Verbindung beibehalten, so dass spätere Anfragen nicht erneute haben.

Wenn eine Anforderung an den Webserver auf einer bereits authentifizierten Verbindung gesendet wird, reagiert der Webserver mit einer unerwarteten 401-Authentifizierung. Dieses Problem kann auftreten, wenn die Anfragen von anderen Anwendungspools auf dem Webserver bearbeitet werden, da IIS keine Authentifizierung über Anwendungspools beibehalten.

Wenn formularbasierte Authentifizierung verwendet wird, behandelt TMG 401 unerwartete Anforderung Weiterleitung an die ursprünglich angeforderte Ressource und ein AuthResend-Tag zur URL. Bei der zweiten Anforderung, bestimmt TMG, dass die Anforderung erneute AuthResend Tag und dann das AuthResend-Tag entfernt, bevor die Anforderung an den Webserver gesendet wird.

Jedoch eine Umleitung enthält keinen HTTP-Methode und der Client Erstellen einer GET-Anforderung nach einer Umleitung. Daher werden die POST-Anforderung und POST-Text nicht an den Webserver gesendet.

Ein Tool wie Strace, HTTPWatch oder Fiddler kann auf dem Client verwendet werden, um festzustellen, ob TMG leitet senden, die das AuthResend-Tag auf POST-Anfragen. Z. B. eine Umleitung für eine Anforderung für die URL http://domain/test.asp würde etwa folgendermaßen aussehen: http://domain/test.asp&authResendNNN

TMG Webproxyprotokolle zeigen nicht AuthResend-Tag, da das Tag aus dem URL entfernt wird, bevor die URL an den Server gesendet und daher auch nicht protokolliert.

Dieses Verhalten kann auch für die GET-Anfragen angezeigt. Das Verhalten wird verursacht jedoch keine Problem dar, da die Umleitung als GET-Anforderung erneut, und dies nicht dasselbe Problem bewirkt.

Problemlösung

Es ist eine interne Einstellung, die auf eine Veröffentlichungsregel anzuweisen, TMG nicht GET-Anfragen automatisch eine erneute Authentifizierung festgelegt werden kann. Unerwarteten 401 Anfragen vom Webserver vermieden werden.

Standardmäßig ist in TMG Service Pack 2 dieser Einstellung aktiviert auf Webveröffentlichungsregeln, die formularbasierte Authentifizierung für den Weblistener und die NTLM-Delegierung verwenden.

Um dieses Problem zu beheben, installieren Sie das Servicepack, das beschrieben wird im folgenden Artikel der Microsoft Knowledge Base:

Beschreibung von Servicepack 2 für Microsoft Forefront Threat Management Gateway 2010 2555840

Status

Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Weitere Informationen

Um dieses Problem zu ISA 2006 oder TMG ohne Service Pack 2, können Sie das folgende Skript auf eine angegebene Webveröffentlichungsregel den internen Parameter. Standardmäßig ist dies die Einstellung TMG Service Pack 2 aktiviert.

Um das Skript zu verwenden, kopieren Sie ihn in Editor, und speichern Sie als VBS-Datei auf den Arraymitgliedern.

Bearbeiten Sie die folgende Zeile im Skript den Namen des entsprechenden Webveröffentlichungsregel ReplaceRuleNameHere ersetzen:

argRuleName = "ReplaceRuleNameHere"

Führen Sie das folgende Skript auf einem Array Elemente in einem Array:

argRuleName = "ReplaceRuleNameHere"argParamName = "SendLogonOn401"
argVal = "true"

Set rule = CreateObject("FPC.Root").GetContainingArray.ArrayPolicy.PolicyRules.Item(argRuleName)
Set VendorSets = rule.VendorParametersSets

On Error Resume Next
Set VendorSet = VendorSets.Item( "{5e302ed5-f5d5-4fad-9b8a-01c72e1569f3}" )
If Err.Number <> 0 Then
Err.Clear
Set VendorSet = VendorSets.Add( "{5e302ed5-f5d5-4fad-9b8a-01c72e1569f3}" )
CheckError
WScript.Echo "No existing VendorSet."
Else
WScript.Echo "Existing VendorSet found. Values in it:"
for each name in VendorSet.allNames
WScript.Echo " ", name, "=", VendorSet.Value(name)
next
WScript.Echo "-------------------------------------"
End If

On Error GoTo 0

On Error Resume Next
valType = "Int" : Val = CInt(argVal)
If Err.Number <> 0 Then
Err.Clear
valType = "Boolean" : Val = CBool(argVal)
If Err.Number <> 0 Then
Err.Clear
valType = "String" : Val = CStr(argVal)
End If
End If

WScript.Echo "Setting", argParamName, "=", Val, "(type=" & valType & ")"
VendorSet.Value(argParamName) = Val

VendorSet.Save

Sub CheckError()
If Err.Number <> 0 Then
WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description
Err.Clear
End If
End Sub

Referenzen

Um weitere Informationen zur Terminologie für Softwareupdates zu erhalten, klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:

824684 Erläuterung von der standardmäßigen Standardbegriffen bei Microsoft Softwareupdates

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern
Schulungen erkunden
Neue Funktionen als Erster erhalten
Microsoft Insider beitreten

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Übersetzungsqualität?
Was hat Ihre Erfahrung beeinflusst?

Vielen Dank für Ihr Feedback!

×