Como usar o Kerberos com o componente ServerXMLHTTP no MSXML

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 314404
Sumário
Este artigo descreve como usar o objeto ServerXMLHttp para trabalhar com a autenticação Kerberos em um cenário específico requer delegação. O artigo também fornece duas páginas do Active Server Pages (ASP) de exemplo e as instruções de solução de problemas.

Observação : você precisa do Microsoft Windows 2000 ou posterior para usar o protocolo Kerberos para autenticação.
Mais Informações
Os três computadores no cenário estão configurados da seguinte maneira:
  • O computador A tem o Microsoft Internet Explorer instalado.
  • Dois servidores de Internet Information Services (IIS) (computador B e C do computador) residam no mesmo domínio.
  • O controlador de domínio possui o serviço Active Directory instalado.
  • O computador B é confiável para delegação.
  • Sob a conta que você deseja delegar, o diferencia conta não pode ser delegada caixa de seleção não estiver marcada.
O cenário é da seguinte maneira:
  • O computador A solicita uma página ASP de um servidor Web do Microsoft Internet Information Services (IIS) que reside em um segundo computador (computador B).
  • A página ASP usa o objeto MSXML ServerXMLHTTP para se comunicar com outra página ASP no servidor Web IIS outro que reside em um terceiro computador (computador C).
  • Você deseja o segundo servidor IIS (computador C) para ver a identidade do usuário que fez logon no primeiro computador (computador A).
Para fazer a delegação de trabalho, execute essas etapas:
  1. Configurar o primeiro servidor IIS (computador B) e configurar uma conta de usuário para delegação para que a autenticação Kerberos pode gerar um token de nível de representante.Para obter informações adicionais sobre como fazer isso, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    283201Como usar delegação no Windows 2000 com +
  2. No primeiro servidor IIS (computador B), ative o objeto XML ServerXMLHTTP para encaminhar as credenciais do usuário automaticamente. Para fazer isso, use um dos seguintes comandos para usar o utilitário proxycfg.exe:
    command prompt> proxycfg -d -p "CorpProxy" "<local>;*"					
    - ou -
    command prompt> proxycfg -d -p "CorpProxy" "<local>;*.microsoft.com"					
    Observação : O objeto ServerXMLHTTP não envia automaticamente as credenciais NTLM do cliente a menos que ele sabe que o servidor de destino está na mesma rede ou na intranet. Por padrão, em outras palavras, o objeto ServerXMLHTTP não "confia" sites da Internet. A heurística que determina se um servidor de destino é confiável é que o proxycfg.exe foi executado para especificar um servidor proxy, mas o servidor de destino específico ao qual desejado enviar a solicitação está listada no proxy ignorar lista. O caractere asterisco (1) é um caractere curinga que representa todas as URLs. Se você usar o caractere asterisco (1), as credenciais do usuário são encaminhadas para todos os servidores de destino.

    Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    289481INFO: Utilitário de configuração de proxy deve ser executar para ServerXMLHTTP para trabalho
  3. Habilite o Internet Explorer usar a autenticação Kerberos.Para obter informações adicionais sobre como ativar o Internet Explorer 6.0 usar o Kerberos, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    299838Não é possível negociar a autenticação Kerberos após atualizar para Internet Explorer 6
    Para obter informações adicionais sobre como ativar outras versões do Internet Explorer para usar o Kerberos, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
    277741Internet Explorer Logon falha devido a um buffer insuficiente para o Kerberos
    299270Kerberos não negociar usando o Internet Explorer 5.5 se um FQDN for usado para conectar-se

Solução de problemas

Quando você usa ServerXMLHttp com a autenticação Kerberos, você receberá uma mensagem de erro "Acesso negado". Essa mensagem de erro é causada normalmente por configuração incorreta. Você pode usar as seguintes páginas ASP dois para ajudar a isolar o problema e detectar o modo de autenticação e identidade de usuário do logon. A maioria dessas duas páginas ASP é o mesmo; a diferença é que a primeira página ASP contém código que usa o objeto ServerXMLHTTP .

  1. Cole o seguinte código no bloco de notas, nomeie o arquivo Test1.asp e, em seguida, salve o arquivo na pasta diretório virtual no primeiro servidor IIS (computador B):
    <%   DIM userID   Dim AuthMethod   Dim AuthType   Dim AuthLength   Dim AuthOther   ' Get the authentication method being used.   userID= Request.ServerVariables("LOGON_USER")   Response.Write "<br>Reach To IIS server on Computer B "      Response.Write "<br> User Id = " & userID   ' Get the authentication method being used.   AuthMethod = Request.ServerVariables("AUTH_TYPE")   ' Get the length of the HTTP_Authorization header (to determine Kerberos or NTLM).   AuthLength = Request.ServerVariables ("HTTP_Authorization")   ' If some other authentication method (other than Negotiate) is used, call it "Other".   If LTrim(RTrim(AuthMethod)) <> "Negotiate" Then AuthOtherMethod   ' If Negotiate is used, go straight to the subroutine to handle it.   If LTrim(RTrim(AuthMethod)) = "Negotiate" Then AuthNegotiateMethod   Response.Write "<br><br> Attempt to connect to IIS on Computer C by using ServerXMLHTTP "      set http = server.createobject("MSXML2.ServerXMLHTTP.4.0")   http.open "GET", "http://iisserver2/test2.asp", false    http.send 	   Response.write "<br> Receiver Status Text: " & http.statusText & " (" &http.status & ")"   Response.write "<br>" & http.responseText    Sub AuthOtherMethod()   	' Because anonymous authentication will be blank, be sure that you realize that it is enabled to the following:   	If LTrim(RTrim(AuthMethod)) = "" Then AuthMethod = "Anonymous"	   	Response.Write "<table width=500>The user was logged in using the <B>" & AuthMethod & "</B> authentication method."   	Response.Write "<P>&#xa0;&#xa0;&#xa0;&#xa0;If you were expecting a different method to be used,"   	Response.Write " please check the settings for the resource you are accessing. Remember, selecting"   	Response.Write " multiple authentication methods, or allowing anonymous access can result in a "   	Response.Write " different method being used.</table>"   End Sub   Sub AuthNegotiateMethod()   	' Typically, NTLM yields a 150 - 300 byte header, and Kerberos is more like 5000 bytes.   	If LEN(AuthLength) > 1000 Then AuthType = "Kerberos"   	If LEN(AuthLength) < 1000 Then AuthType = "NTLM"   	Response.Write "<table width=500>The <B>Negotiate</B> method was used!<BR>"	   	' Indicate the authentication method that is used to authenticate the user (and show a warning about the script).   	Response.Write "The user was logged on using <B>" & AuthType & "</B>."   	Response.Write "<P><font color=#800000><B>Please do not refresh this page</B></font>.<BR>"   	Response.Write "&#xa0;&#xa0;&#xa0;&#xa0;If you do use refresh, <B>Kerberos</B> will always show up as <B>NTLM</B>."   	Response.Write " This is because the HTTP_Authorization header is being used to determine the authentication method used."   	Response.Write " Since the second request is technically unauthenticated, the length is zero. Please open a new browser"   	Response.Write " for any subsequent requests.</table>"   End Sub   %>					
    Observação : ASP esta página requer que você tenha o analisador MSXML 4.0 instalado. Se desejar usar o analisador MSXML 3.0, altere o ProgId MSXML2.ServerXMLHTTP.4.0 para MSXML2.ServerXMLHTTP.3.0 .

  2. Modificar o URL na linha a seguir para apontar para o URL correto para Test2.asp. Test2.asp é a segunda página ASP que listadas neste artigo.
    http.open "GET", "http://iisserver2/test2.asp", false 					
  3. Cole o seguinte código no bloco de notas e, em seguida, salve o arquivo como Test2.asp na pasta do diretório virtual no segundo servidor IIS (computador C):
    <%   DIM userID   Dim AuthMethod   Dim AuthType   Dim AuthLength   Dim AuthOther   ' Get the authentication method being used.   userID= Request.ServerVariables("LOGON_USER")   Response.Write "<br>Reach To IIS server on Computer C "      Response.Write "<br> User Id = " & userID   ' Get the authentication method being used.   AuthMethod = Request.ServerVariables("AUTH_TYPE")   ' Get the length of the HTTP_Authorization header (to determine Kerberos or NTLM).   AuthLength = Request.ServerVariables ("HTTP_Authorization")   ' If some other authentication method (other than Negotiate) is used, call it "Other".   If LTrim(RTrim(AuthMethod)) <> "Negotiate" Then AuthOtherMethod   ' If Negotiate is used, go straight to the subroutine to handle it.   If LTrim(RTrim(AuthMethod)) = "Negotiate" Then AuthNegotiateMethod   Sub AuthOtherMethod()   	' Because anonymous authentication will be blank, be sure that you realize that it is enabled to the following:   	If LTrim(RTrim(AuthMethod)) = "" Then AuthMethod = "Anonymous"	   	Response.Write "<table width=500>The user was logged in using the <B>" & AuthMethod & "</B> authentication method."   	Response.Write "<P>&#xa0;&#xa0;&#xa0;&#xa0;If you were expecting a different method to be used,"   	Response.Write " please check the settings for the resource you are accessing. Remember, selecting"   	Response.Write " multiple authentication methods, or allowing anonymous access can result in a "   	Response.Write " different method being used.</table>"   End Sub   Sub AuthNegotiateMethod()   	' Typically, NTLM yields a 150 - 300 byte header, while Kerberos is more like 5000 bytes.   	If LEN(AuthLength) > 1000 Then AuthType = "Kerberos"   	If LEN(AuthLength) < 1000 Then AuthType = "NTLM"   	Response.Write "<table width=500>The <B>Negotiate</B> method was used!<BR>"	   	' Indicate the authentication method that is used to authenticate the user (and show a warning about the script).   	Response.Write "The user was logged on using <B>" & AuthType & "</B>."   	'Response.Write "<P><font color=#800000><B>Please do not refresh this page</B></font>.<BR>"   	'Response.Write "&#xa0;&#xa0;&#xa0;&#xa0;If you do use refresh, <B>Kerberos</B> will always show up as <B>NTLM</B>."   	'Response.Write " This is because the HTTP_Authorization header is being used to determine the authentication method used."   	'Response.Write " Since the second request is technically unauthenticated, the length is zero. Please open a new browser"   	'Response.Write " for any subsequent requests.</table>"   End Sub   %>					
  4. Carregue a página ASP primeira (Test1.asp) em um navegador Internet Explorer. Se tudo está configurado corretamente, você verá saída similar à seguinte:
    Reach To IIS server on Computer BUserId = Domain1\user1The Negotiate method was used!The user was logged on using KerberosAttempt to connect to IIS on Computer C by using ServerXMLHTTPReceiver Status Text: OK (200)Reach To IIS server on Computer CUserId = Domain1\user1The Negotiate method was used!The user was logged on using Kerberos					
Se você vir uma identificação de usuário incorreto, uma identificação de usuário vazia ou a seguinte mensagem de erro, a configuração não estiver definida corretamente:
O usuário foi conectado usando NTLM
Para resolver esses problemas, isolar o problema em cada computador individual e, em seguida, redefinir as configurações.
Referências
Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
290761Perguntas freqüentes sobre ServerXMLHTTP
291008PROBLEMA: Mensagem de erro 'Acesso negado' ao usar ServerXMLHTTP para acessar um site autenticado

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 314404 - Última Revisão: 07/13/2004 15:43:03 - Revisão: 1.2

Microsoft XML Parser 3.0 Service Pack 2, Microsoft XML Core Services 4.0

  • kbmt kbhowto KB314404 KbMtpt
Comentários