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 http://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:
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