2013-04-25 15 views
5

Ho un sito in esecuzione in IIS 7.5 a cui si accede utilizzando un alias DNS diverso dal nome del server effettivo. In IE 8, l'autenticazione integrata non funziona, ma in Firefox e Chrome tutto funziona correttamente. (IE presenta una richiesta di credenziali alcune volte, quindi visualizza una pagina di errore 401.1)Rimuovi NEGOTIATE da WindowsAuthentication in IIS

Ho capito che ciò è dovuto a IE che utilizza Kerberos (detto anche "Negoziare") su NTLM e Kerberos richiede la registrazione di un principal di servizio Nome (utilizzando SETSPN) in modo che la mancata corrispondenza tra il nome DNS e il nome del server sia gestita correttamente.

Il mio sito web, tuttavia, non ha bisogno di rappresentazione - è sufficiente avere la delega. Quindi, invece di scherzare con SetSPN, vorrei semplicemente rimuovere "Negozia" dall'elenco dei metodi WindowsAuthentication in IIS.

Ho cercato per un po 'di tempo per scoprire come farlo in IIS. Ho giocato con molti appcmd comandi - ma non riesco proprio a trovare esempi on-line, o capire come leggendo documentazione MSDN o utilizzando appcmd /? per fare appcmd comandi si applicano solo a una particolare applicazione all'interno di un sito piuttosto che l'intero server web . Qualche ricerca dopo più di due giorni, e almeno 3 dozzine di pagine web visitate, continuo a essere inutile.

Come in Tarnation faccio ad avere questo fatto - sembra che dovrebbe essere così facile!

risposta

11

Aprire l'Editor di configurazione in IIS. Viene fornito con IIS 7.5 oppure è possibile scaricare IIS administration pack per IIS 7.0. Passare all'ambito che si desidera modificare (server, sito o applicazione) e quindi aprire l'icona:

IIS Configuration Editor.

modificare la sezione per system.webServer/security/authentication/windowsAuthentication:

IIS Configuration Editor - Windows Authentication

Fare clic sulla voce providers, e quindi fare clic su Edit Items sulla destra. Selezionare la voce "negoziare" e fare clic su "Rimuovi":

IIS Configuration Editor - Windows Authentication - providers

chiudere il dialogo e fare clic su Apply nel riquadro Actions sulla destra.

Il tuo problema è risolto! Non più Kerberos/negoziare!

Nota: è possibile fare clic Generate Script nel riquadro Azioni per visualizzare il codice che farà il cambiamento in C#, JavaScript o con appcmd dalla riga di comando.

Per riferimento, ecco la dichiarazione appcmd per eseguire il lavoro senza utilizzare l'Editor di configurazione.

appcmd.exe set config "Virtual/path/to/application" -section:system.webServer/security/authentication/windowsAuthentication /-"providers.[value='Negotiate']" /commit:apphost