DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 314404 - Ultima modifica: martedì 13 luglio 2004 - Revisione: 1.2

 

In questa pagina

Sommario

In questo articolo viene descritto come utilizzare l'oggetto ServerXMLHttp per lavorare con l'autenticazione Kerberos in uno scenario specifico che richiede la delega. L'articolo fornisce inoltre due pagine ASP (Active Server Pages) di esempio e istruzioni di risoluzione dei problemi.

Nota : È necessario Microsoft Windows 2000 o versioni successive per utilizzare il protocollo Kerberos per l'autenticazione.

Informazioni

I tre computer nello scenario sono configurati come indicato di seguito:
  • Computer A è installato Microsoft Internet Explorer.
  • Due server di Internet Information Services (IIS) (Computer B e C del computer) risiedono nel dominio stesso.
  • Il controller di dominio dispone di installato il servizio Active Directory.
  • Computer B è trusted per delega.
  • Con l'account che si desidera delegare, il account è sensibile non può essere delegato casella di controllo non è selezionata.
Lo scenario è la seguente:
  • Computer A richiede una pagina ASP un server Web di Microsoft Internet Information Services (IIS) che risiede in un secondo computer (Computer B).
  • La pagina ASP utilizza l'oggetto MSXML ServerXMLHTTP per comunicare con un'altra pagina ASP su un altro server Web IIS che risiede in un terzo computer (Computer C).
  • Si desidera il secondo server IIS (Computer C) per visualizzare l'identità dell'utente che ha effettuato il primo computer (Computer A).
Per rendere la delega di lavoro, attenersi alla seguente procedura:
  1. Configurare il server IIS primo (Computer B) e impostare un account utente per la delega in modo che l'autenticazione Kerberos può generare un token a livello di delega.Per ulteriori informazioni su come effettuare questa operazione, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    283201  (http://support.microsoft.com/kb/283201/EN-US/ ) Utilizzo di delega in Windows 2000 con COM +
  2. Sul primo server IIS (Computer B), è necessario attivare l'oggetto XML ServerXMLHTTP inoltrare automaticamente le credenziali dell'utente. Per effettuare questa operazione, utilizzare uno dei seguenti comandi per eseguire l'utilità proxycfg.exe:
    command prompt> proxycfg -d -p "CorpProxy" "<local>;*"
    					
    - o -
    command prompt> proxycfg -d -p "CorpProxy" "<local>;*.microsoft.com"
    					
    Nota : l'oggetto ServerXMLHTTP non invia automaticamente le credenziali NTLM del client a meno che non sa che il server di destinazione nella stessa rete o rete intranet. Per impostazione predefinita, in altre parole, l'oggetto ServerXMLHTTP non considera "attendibili" siti Internet. L'euristica che determina se un server di destinazione è attendibile è che Proxycfg.exe è stato eseguito per specificare un server proxy, ma il server di destinazione particolare a cui inviare la richiesta nel proxy ignorare l'elenco. Il carattere asterisco (*) è un carattere jolly è l'acronimo di tutti gli URL. Se si utilizza il carattere asterisco (*), le credenziali dell'utente vengono inoltrate a tutti i server target.

    Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    289481  (http://support.microsoft.com/kb/289481/EN-US/ ) INFORMAZIONI: Utilità di configurazione proxy deve consentita per ServerXMLHTTP per l'utilizzo
  3. Abilitare Internet Explorer per l'utilizzo dell'autenticazione Kerberos.Per ulteriori informazioni sull'attivazione di Internet Explorer 6.0 utilizzare Kerberos, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    299838  (http://support.microsoft.com/kb/299838/EN-US/ ) Impossibile negoziare l'autenticazione Kerberos dopo l'aggiornamento a Internet Explorer 6
    Per ulteriori informazioni sull'attivazione di altre versioni di Internet Explorer per utilizzare Kerberos, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
    277741  (http://support.microsoft.com/kb/277741/EN-US/ ) Errore di Internet Explorer accesso a causa di un buffer insufficiente per Kerberos
    299270  (http://support.microsoft.com/kb/299270/EN-US/ ) Kerberos Negotiate non utilizza Internet Explorer 5.5, se un nome di dominio completo per la connessione

Risoluzione dei problemi

Quando si utilizza ServerXMLHttp con l'autenticazione Kerberos, si potrebbe essere visualizzato un messaggio di errore "Accesso negato". Questo messaggio di errore è in genere causato da errori di configurazione. È possibile utilizzare i seguenti due pagine ASP per isolare il problema e individuare la modalità di utente accesso identità e autenticazione. La maggior parte di queste due pagine ASP è lo stesso, la differenza è che la prima pagina ASP contiene codice che utilizza l'oggetto ServerXMLHTTP .

  1. Incollare il codice seguente nel blocco note, denominare il file Test1.asp e quindi salvare il file nella cartella directory virtuale sul server IIS primo (Computer 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
    
       
    %>
    					
    Nota : pagina ASP questo richiede del parser MSXML 4.0 installato. Se si desidera utilizzare il parser MSXML 3.0, è possibile modificare il ProgId MSXML2.ServerXMLHTTP.4.0 per MSXML2.ServerXMLHTTP.3.0 .

  2. Modificare l'URL nella riga seguente per puntare all'URL corretto per Test2.asp. Test2.ASP è la seconda pagina ASP elencata in questo articolo.
    http.open "GET", "http://iisserver2/test2.asp", false 
    					
  3. Incollare il codice seguente nel blocco note e quindi salvare il file come Test2.asp nella cartella directory virtuale sul secondo server IIS (Computer 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. Caricare la prima pagina ASP (Test1.asp) in un browser Internet Explorer. Se tutto è impostato correttamente, si vedere output simile al seguente:
    Reach To IIS server on Computer B
    UserId = Domain1\user1
    The Negotiate method was used!
    The user was logged on using Kerberos
    
    Attempt to connect to IIS on Computer C by using ServerXMLHTTP
    Receiver Status Text: OK (200)
    
    Reach To IIS server on Computer C
    UserId = Domain1\user1
    The Negotiate method was used!
    The user was logged on using Kerberos
    					
Se viene visualizzato un ID utente non corretto, un ID utente vuoto o il seguente messaggio di errore, la configurazione non è impostata correttamente:
L'utente è stato effettuato l'accesso tramite NTLM
Per risolvere questi problemi, isolare il problema in ogni singolo computer e quindi riconfigurare le impostazioni.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
290761  (http://support.microsoft.com/kb/290761/EN-US/ ) Frequently Asked Questions About ServerXMLHTTP
291008  (http://support.microsoft.com/kb/291008/EN-US/ ) PRB: "Accesso negato" messaggio di errore quando l'utilizzo di ServerXMLHTTP per accede a un sito autenticato

Le informazioni in questo articolo si applicano a:
  • Microsoft XML Parser 3.0 Service Pack 2
  • Microsoft XML Core Services 4.0
Chiavi: 
kbmt kbhowto KB314404 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 314404  (http://support.microsoft.com/kb/314404/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store