Condividi tramite


Quando si usano intestazioni di preautenticazione con Internet Explorer e IIS, viene restituito uno stato 401.1 imprevisto

Questo articolo risolve il problema a causa del quale viene restituito uno stato 401.1 imprevisto con intestazioni di preautenticazione. Si verifica quando si usa Internet Explorer per il browser in un'applicazione Web ospitata in Internet Information Services (IIS).

Versione originale del prodotto: modalità Internet Explorer in Microsoft Edge, Internet Explorer 11, Internet Information Services
Numero KB originale: 2749007

Sintomi

Prendi in considerazione lo scenario seguente:

  • Si usa Internet Explorer (o la modalità Internet Explorer in Microsoft Edge) per esplorare un'applicazione Web ospitata in IIS.
  • Il computer client è configurato per l'uso dell'autenticazione preliminare in Impostazioni Internet e l'autenticazione in modalità kernel è abilitata in IIS.
  • La richiesta Web inviata da Internet Explorer (o modalità Internet Explorer in Microsoft Edge) è la prima richiesta da inviare all'applicazione IIS.

In questo scenario, IIS potrebbe restituire una risposta HTTP (HyperText Transfer Protocol) 401.1 a Internet Explorer (o modalità Internet Explorer in Microsoft Edge) in risposta alla richiesta del browser. Il Web browser potrebbe richiedere di immettere il nome utente e la password. In alternativa, potrebbe essere visualizzato un messaggio di errore HTTP 401.1 nella finestra del browser.

Causa

Questo comportamento è predefinito. La risposta 401.1 si verifica se la prima richiesta del Web browser inviata all'applicazione IIS contiene una delle intestazioni seguenti:

  • Intestazione di Windows Challenge/Response (NTLM)
  • Intestazione Negotiate WWW-Authorization (nota come pre-autenticazione)

Note

Esistono molti motivi per cui un utente potrebbe richiedere le credenziali in Internet Explorer che non rientrano nell'ambito di questo articolo. Vedere la sezione Altre informazioni per informazioni su come determinare se la causa della richiesta proviene dal problema descritto qui.

Soluzione alternativa

Per aggirare questo comportamento, disabilitare La preautenticazione in Impostazioni Internet o disattivare l'autenticazione in modalità kernel per l'applicazione Web IIS.

Avviso

Se si usa l'editor del Registro di sistema in modo errato, è possibile che si verifichino gravi problemi che potrebbero richiedere di reinstallare il sistema operativo. Microsoft non è in grado di garantire che sia possibile risolvere i problemi derivanti dall'uso non corretto dell'editor del Registro di sistema. Use Registry Editor at your own risk.

Per modificare questo comportamento in Internet Explorer, usare l'editor del Registro di sistema (Regedt32.exe) per aggiungere un valore alla chiave del Registro di sistema seguente:

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings/

Note

La chiave del Registro di sistema è un percorso; è stato sottoposto a wrapping per la leggibilità.

Aggiungere i valori del Registro di sistema seguenti:

  • Nome valore: DisableNTLMPreAuth
  • Tipo di dati: REG_DWORD
  • Valore: 1

Per modificare questo comportamento in IIS, disabilitare l'autenticazione in modalità kernel per l'applicazione Web IIS:

  1. Aprire Gestione Internet Information Services (IIS) eseguendo il comando seguente da un prompt dei comandi amministrativo:

    %windir%\System32\inetsrv\inetmgr.exe
    
  2. Nel riquadro Connessioni espandere il nome del server, espandere Siti, quindi espandere il sito, l'applicazione o il servizio Web per cui si vuole disabilitare l'autenticazione in modalità kernel.

  3. Scorrere fino alla sezione Sicurezza nel riquadro Home e quindi fare doppio clic su Autenticazione.

  4. Nel riquadro Autenticazione selezionare Autenticazione di Windows.

  5. Selezionare Impostazioni avanzate nel riquadro Azioni .

  6. Quando viene visualizzata la finestra di dialogo Impostazioni avanzate, deselezionare la casella di controllo Abilita autenticazione in modalità kernel.

  7. Selezionare OK per chiudere la finestra di dialogo Impostazioni avanzate.

Importante

La disabilitazione dell'autenticazione in modalità kernel potrebbe causare l'esito negativo delle applicazioni Web che richiedono l'autenticazione Kerberos e la delega.

Ulteriori informazioni

Per determinare se il prompt è causato dal problema descritto in questo articolo, usare lo strumento Fiddler. Usare lo strumento per visualizzare il traffico di richiesta/risposta HTTP per la richiesta che genera la richiesta in Internet Explorer (o in modalità Internet Explorer in Microsoft Edge). Sono necessari anche i log IIS dal server IIS per confermare lo stato HTTP e i codici di stato secondari. L'esempio seguente usa Internet Explorer per illustrare questo comportamento:

  1. Avviare lo strumento Fiddler e abilitare l'acquisizione del traffico.

  2. Passare all'applicazione Web IIS in modo che provocherà la richiesta di credenziali.

  3. In Fiddler cercare la richiesta che ha generato il 401. Esaminando le visualizzazioni richiesta e risposta non elaborate, verranno visualizzate voci simili a quelle seguenti:

    Intestazioni della richiesta:

    GET /App1/default.aspx HTTP/1.1
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    Host: websitename
    Cookie: ASP.NET_SessionId=jdzbfpnmacq0jykhxnhqhe3j
    Authorization: Negotiate
    <header content omitted>
    

    Intestazioni di risposta

    HTTP/1.1 401 Unauthorized
    Content-Type: text/html
    Server: Microsoft-IIS/7.5
    WWW-Authenticate: Negotiate
    WWW-Authenticate: NTLM
    X-Powered-By: ASP.NET
    Date: Wed, 22 Aug 2012 17:41:09 GMT
    Content-Length: 1293
    Proxy-Support: Session-Based-Authentication
    

Note

La richiesta iniziale all'applicazione Web contiene già l'intestazione Authorization , che quindi restituisce la risposta 401. Il log IIS corrispondente dovrebbe mostrare una voce simile alla seguente:

2012-08-22 17:41:09 2001:4898:0:fff:200:5efe:157.59.113.72 GET /App1/default.aspx - 80 - 2001:4898:0:fff:0:
5efe:172.18.100.183 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/5.0;+SLCC2;+.NET+CLR+
2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+MS-
RTC+EA+2;+BRI/1;+Zune+4.7;+MS-RTC+LM+8;+BRI/2;+Creative+AutoUpdate+v1.41.02) 401 1 2148074254 5005

Lo stato HTTP e lo stato secondario sono 401.1, che viene mappato a Accesso negato a causa di credenziali non valide.

Per altre informazioni, consultare la documentazione seguente: