An authentication error occurred while communicating with the web server

Dopo l’installazione della Service Pack 2 di .NET 2.0 (o della SP1 di .NET 3.5) tentando il debugging remoto di un’applicazione web per la quale utilizzare gli host headers , potreste incappare in questo errore:

Unable to start debugging on the web server. An authentication error occurred while communicating with the web server

Il motivo è una modifica di sicurezza introdotta proprio da queste Service Pack: il comportamento di default è ora quello di utilizzare l’host name specificato nell’URL, in un SPN nel pacchetto di autenticazione NTLM; in altre parole facendo una richiesta all’indirizzo https://myserver/myapp, l’SPN “HTTP/myserver” viene aggiunto alle informazioni di autenticazione. Questa è una buona cosa dal punto di vista della sicurezza, ma con alcune conseguenze sgradite

Il processo di autenticazione NTLM prevede un meccanismo di challenge che parte dalla macchina di destinazione (il server web) ed ha come destinatario il client che ha fatto la richiesta iniziale; quando Windows riceve un challenge che lui stesso ha generato, l’autenticazione fallisce a meno che la connessione non sia di tipo loopback. Quando un sito ha un host header configurato, l’host name non è ne il nome della macchia, ne l’indirizzo IP di loop back, ne l’indirizzo IP della macchia, quindi l’autenticazione è destinata a fallire.

Esistono due possibili soluzioni a questo problema:

  1. L’approccio raccomandato consiste nel mappare l’host header con il look pack address nel registro di sistema, ecco come fare:
    • Cliccate su Start > Run, digitate regedit e cliccate OK
    • Nell’editor del registro di sistema selezionate la chiave “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0”
    • Create un nuovo valore di tipo Multi-String e chiamatelo BackConnectionHostNames
    • Modificatene il valore digitando l’host name (potete inserire anche più di un nome) del sito o dei siti che si trovano sul server
    • Riavviate IIS
  2. La seconda soluzione, però meno sicura della precedente, consiste nel disabilitare il loop back check come descritto in https://support.microsoft.com/kb/896861

Per maggiori dettagli vi rimando al post reporting-services-http-401-unauthorized-host-headers-require-your-attention.aspx (in inglese).

 

Carlo Cardella
Senior Support Engineer
EMEA IIS and Web Developer Support