CORRECÇÃO: Poderão falhar solicitações POST em um servidor web que esteja executando o Forefront Threat Management Gateway 2010

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

2596444
Sintomas
Considere o seguinte cenário:
  • Você tem um servidor que esteja executando o Microsoft Forefront Threat Management Gateway (TMG) 2010.
  • O servidor da TMG está configurado como um servidor web.
  • O ouvinte da web TMG usa autenticação baseada em formulários, juntamente com a delegação NTLM no servidor web publicado.
  • Existem solicitações POST para o servidor de web TMG.
Nesse cenário, as solicitações POST podem falhar. Isso pode causar vários problemas de aplicativos que dependem do tipo de solicitações POST que falham.
Causa
Esse problema ocorre se as seguintes condições forem verdadeiras:
  • A autenticação baseada em formulários TMG está sendo usada.
  • Delegação NTLM é configurada na regra de publicação TMG delegar autenticação no servidor web publicado.
  • ISA envia uma solicitação ao servidor web em uma conexão já autenticada.
  • O servidor web responde com uma 401.
Quando delegação NTLM é usada, a TMG autentica uma conexão ao servidor web na primeira solicitação ao servidor web em que a conexão. A autenticação é mantida, em seguida, na conexão para que as solicitações posteriores não é necessário ter reautenticação.

Se uma solicitação é enviada ao servidor web em uma conexão já autenticada, o servidor web pode responder com uma solicitação de 401 autenticação inesperada. Esse problema pode ocorrer quando as solicitações são atendidas por diferentes pools de aplicativos no servidor web, porque o IIS não persiste autenticação através de pools de aplicativos.

Quando a autenticação baseada em formulários está sendo usada, TMG tratará a solicitação 401 inesperado redirecionar o usuário volta para o recurso solicitado originalmente e adicionando uma marca de AuthResend para a URL. Quando o cliente faz a segunda solicitação, a TMG determina que a solicitação precisa reautenticação pela marca AuthResend e, em seguida, remove a marca de AuthResend antes da solicitação é enviada ao servidor web.

Entretanto, um redirecionamento não inclui um método HTTP e o cliente fará com que uma solicitação GET depois de um redirecionamento. Portanto, a solicitação POST e o corpo do POST não são enviados para o servidor web.

Uma ferramenta como Strace, Fiddler ou HTTPWatch pode ser usada no cliente para determinar se a TMG está enviando redirecionamentos que têm a marca de AuthResend em resposta a solicitações POST. Por exemplo, um redirecionamento para uma solicitação para o http://domain/test.asp de URL é semelhante a seguir: http://domain/test.asp&authResendNNN

Os logs de proxy da web TMG não mostram a marca AuthResend porque a marca é removida da URL antes que a URL é enviada ao servidor web e, portanto, também não está conectada.

Esse comportamento pode ser percebido para solicitações GET. No entanto, o comportamento não irá causar um problema, porque o redirecionamento será ser reenviado como uma solicitação GET, e isso não causa o mesmo problema.
Resolução
Há uma configuração interna que pode ser definida em uma regra de publicação para informar a TMG reautenticação automaticamente solicitações de não-GET. Isso evita que as 401 solicitações inesperadas do servidor web.

Por padrão, na TMG Service Pack 2 essa configuração é ativada em regras que têm a autenticação baseada em formulários no ouvinte da web e que usa delegação NTLM de publicação na web.

Para resolver esse problema, instale o service pack que está descrito no seguinte artigo da Base de Conhecimento Microsoft:
2555840 Descrição do Service Pack 2 para o Microsoft Forefront Threat Management Gateway 2010

Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Mais Informação
Para contornar esse problema no ISA 2006 ou na TMG sem o Service Pack 2, você pode usar o script a seguir para definir o parâmetro interno em uma regra de publicação da web especificada. Por padrão, essa é a configuração que permite a TMG Service Pack 2.

Para usar o script, copie-o no bloco de notas e salve-o como um arquivo. vbs em um dos membros da matriz.

Edite a seguinte linha no script, substituindo ReplaceRuleNameHere com o nome da regra de publicação da web relevante:
argRuleName = "ReplaceRuleNameHere"
Em seguida, execute o seguinte script em um dos membros da matriz em uma matriz:
argRuleName = "ReplaceRuleNameHere"argParamName = "SendLogonOn401"argVal = "true"Set rule = CreateObject("FPC.Root").GetContainingArray.ArrayPolicy.PolicyRules.Item(argRuleName)Set VendorSets = rule.VendorParametersSetsOn Error Resume NextSet VendorSet = VendorSets.Item( "{5e302ed5-f5d5-4fad-9b8a-01c72e1569f3}" )If Err.Number <> 0 ThenErr.ClearSet VendorSet = VendorSets.Add( "{5e302ed5-f5d5-4fad-9b8a-01c72e1569f3}" )CheckErrorWScript.Echo "No existing VendorSet."ElseWScript.Echo "Existing VendorSet found. Values in it:"for each name in VendorSet.allNamesWScript.Echo " ", name, "=", VendorSet.Value(name)nextWScript.Echo "-------------------------------------"End IfOn Error GoTo 0On Error Resume NextvalType = "Int" : Val = CInt(argVal)If Err.Number <> 0 ThenErr.ClearvalType = "Boolean" : Val = CBool(argVal)If Err.Number <> 0 ThenErr.ClearvalType = "String" : Val = CStr(argVal)End IfEnd IfWScript.Echo "Setting", argParamName, "=", Val, "(type=" & valType & ")"VendorSet.Value(argParamName) = ValVendorSet.SaveSub CheckError()If Err.Number <> 0 ThenWScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.DescriptionErr.ClearEnd IfEnd Sub
Referências
Para obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684 Descrição da terminologia padrão usada para descrever as atualizações de software Microsoft

ISA TMG NTLM delegação formulários FBA POST

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 2596444 - Última Revisão: 10/17/2011 19:26:00 - Revisão: 1.0

  • Microsoft Forefront Threat Management Gateway 2010 Enterprise
  • Microsoft Forefront Threat Management Gateway 2010 Standard
  • Microsoft Forefront Threat Management Gateway 2010 Service Pack 1
  • kbfix kbbug kbexpertiseinter kbsurveynew kbmt KB2596444 KbMtpt
Esta informação foi útil?