2012-09-20 4 views
26

Ho riscontrato un problema con il recupero dell'autenticazione di Windows su IIS 7.5. L'applicazione è un sito interno creato in asp.net MVC 3. Il pool di applicazioni utilizza un utente di dominio specifico e il sito utilizza l'autenticazione di Windows. Ogni volta che provo a lanciare il sito, IE mi richiede un login.L'autenticazione di Windows non funziona in IIS 7.5

Se annullo abbastanza, il sito viene visualizzato, incasinato, ma il mio nome è associato al registro di Windows visualizzato in alto. In modo che mi dice che il sito sta raccogliendo le mie credenziali di Windows correttamente.

Ho aggiunto l'utente locale della rete per avere accesso in lettura alla cartella inetpub sul server e ora non richiede l'accesso con IE 8. Ma su Chrome viene visualizzato l'errore "Errore 338 (net :: ERR_INVALID_AUTH_CREDENTIALS) : Errore sconosciuto.".

È nella zona dei siti Intranet. Avrei dovuto dirlo ma ho dimenticato. Il sito utilizzato per lavorare sul nostro vecchio server di sviluppo, ma quando ho aggiornato a Win 2008 R2 con IIS 7.5 ha smesso di funzionare. Utilizzato per essere nel 2003 con IIS 6.0.

Mi chiedo se qualcuno ha qualche idea su che altro posso provare. Sto praticamente facendo girare le mie ruote a questo punto.

ho provato tutte le soluzioni nel link qui sotto e nessuno di loro hanno risolto il problema

http://forums.iis.net/t/1177154.aspx

http://forums.iis.net/t/1178188.aspx

Receiving login prompt using integrated windows authentication

http://warnajith.blogspot.com/2011/06/iis-75-401-unauthorized-access-error.html

http://forums.asp.net/t/1639511.aspx/1

https://superuser.com/questions/128746/iis-asks-for-login-pass-when-accessed-using-hostname-but-not-when-localhost-is

http://ask.metafilter.com/183636/Prompted-for-a-username-and-password-when-browsing-to-an-IIS-virtual-directory

IIS 7 and Windows Authentication

risposta

17

Ho trovato la risposta a questo. È un'impostazione di configurazione che non è mappata nella GUI. Ho dovuto andare nel file di configurazione host dell'applicazione situato a <% SystemDrive%>/Windows/System32/inetsrv/config e modificare le impostazioni di seguito.

impostazioni di default in cui

<windowsAuthentication enabled="true"> <providers> <add value="Negotiate" /> </providers> </windowsAuthentication>

cambiato in questo ed ha funzionato.

<windowsAuthentication enabled="true" useKernelMode="true" useAppPoolCredentials="true"> <providers> <add value="NTLM" /> </providers> </windowsAuthentication>

+1

questa è la configurazione a livello di macchina, suppongo che se la aggiungi al tuo web.config, dovrebbe funzionare anche. –

+1

Doveva essere a livello della macchina. Era già impostato in questo modo nelle configurazioni web. –

+8

Ho avuto un problema simile prima e risolto navigando in IIS> web app> autenticazione> autenticazione di Windows> tasto destro del mouse> Provider> cambia NTLM per essere il migliore. Sospetto che sia un problema con l'autenticazione Kerberos non funzionante o qualcosa del genere. Ci sono alcuni fantastici articoli su Kerberos in questa serie http://technet.microsoft.com/en-us/library/ms191153.aspx che potrebbero aiutarti a risolvere ulteriormente se lo desideri. – Rory

6

Affinché le credenziali integrate per essere passato da IE, il sito ha bisogno di essere nella vostra zona di siti Intranet. Non può essere in siti attendibili o altri siti.

+0

E 'nella nostra zona di siti intranet. Avrei dovuto dirlo ma ho dimenticato. Il sito utilizzato per lavorare sul nostro vecchio server di sviluppo, ma quando ho aggiornato a Win 2008 R2 con IIS 7.5 ha smesso di funzionare. Utilizzato per essere nel 2003 con IIS 6.0 –

+0

Non posso ringraziarvi abbastanza; questo era l'ultimo passo di molti necessari. Vorrei che IE fosse abbastanza intelligente da capirlo comunque, IMHO .... ma grazie! – JosephDoggie

2

Ho avuto un problema simile ed è stato risolto aggiungendo il gruppo di utenti (MYDOMAIN \ Users) alla cartella fisica dell'applicazione con le autorizzazioni di lettura.

+0

Provato e ancora non funziona. –

+0

Ho un problema/soluzione simile http://stackoverflow.com/questions/14120734 di cui non sono soddisfatto - qualche idea sul perché è necessaria? – Rory

0

Se il browser richiede credenziali, credo che le credenziali del pool di applicazioni non abbiano accesso ad alcune risorse sulla pagina. Hai provato a creare una pagina html vuota e l'accesso a quella pagina?

<html> 
<body> 
hello world! 
</body> 
</html> 
+0

Sì, ci ho provato senza fortuna. Ho cercato di aggiungere il pool di applicazioni e l'utente utilizzato per accedere al pool di applicazioni. –

+0

Hai provato a monitorare il traffico con Fiddler? Dovrebbe dirti la richiesta e il codice di risposta per ogni risorsa sulla tua pagina. Il codice di risposta HTTP dovrebbe essere il punto di partenza. –

+0

Ho già risolto il problema. In pratica, le impostazioni di configurazione non erano impostate correttamente e non permettevano che l'autenticazione avvenisse come dovrebbe. Grazie comunque. –

2

Ho un problema simile che viene risolto solo muovendo NTLM in cima Kerberos in fornitori come spiegato da Rory, o modificando DNS. Il problema si verifica solo in IIS7 quando l'intestazione host del sito Web esiste come CNAME (alias) nel DNS. in IIS6, l'autenticazione integrata di Windows utilizza solo NTLM per impostazione predefinita. in IIS7, IWS utilizza Kerberos prima di NTLM per impostazione predefinita. Sostituire il record CNAME con un record A risolve il problema. Kerberos non ha problemi con i record A in DNS, ma ha problemi con gli alias.

Così pare DNS CNAME non sono compatibili con Kerberos in Windows 2008.

Chris

21

correlate Nota: Se si sta tentando di replicare il tuo sito su localhost, e l'autenticazione di Windows è attivata ed ancora non riesce, il soluzione è un po 'registro di hacking per evitare il controllo di loopback:

Utilizzando regedit, accedere a HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ MSV1_0 Aggiungi un nuovo Multi-Valore stringa per MSV1_0 e denominarlo BackConnectionHostNames Aggiungere il hos t nomi che desideri utilizzare. Esempio, "mysite.com". Riavvia IIS.

Source link

Il valore deve essere il nome del sito nel file hosts di Windows.

Anche per poter accedere a una cartella di dati non autenticata utilizzando i file_get_contents di PHP, ho dovuto aggiungere questo al file applicationHost.config, per evitare errori 401.

<location path="mysite.com/data"> 
     <system.webServer> 
      <security> 
       <authentication> 
        <anonymousAuthentication enabled="true" /> 
        <windowsAuthentication enabled="false" /> 
       </authentication> 
      </security> 
     </system.webServer> 
    </location> 
+0

Per questo, ti ringrazio per il mio tornaconto. – TheSoftwareJedi

+0

Non ho intenzione di applicare la modifica del registro (solo perché odio tenere traccia dei cambiamenti di reg), ma la lettura di questo articolo ha rivelato il problema: "Reflection Attacks". Questo è essenzialmente quando un utente malintenzionato tenta di ingannare l'host per fornire una risposta alla propria sfida. Apparentemente IIS ha una funzione di sicurezza per prevenire questo. Di conseguenza, ** puoi autenticare localmente solo se il tuo sito utilizza lo stesso nome del tuo computer (o del dominio corrente). ** Questo hack ti consente di aggirare tale restrizione. – Lopsided

+0

NOTA: Vorrei aggiungere che questo hack è stato applicato SOLO alla mia casella DEV personale. NON funziona così in produzione. Ciò è stato fatto per consentire l'autenticazione a scopo di test. E dover rendere il nome del tuo sito uguale a quello del tuo computer è un po 'sciocco, se questo è il caso. – captainhero70

0

Ho un problema simile.

Avevo un'applicazione in Sito Web predefinito che ha già abilitato l'autenticazione di Windows ma non ha funzionato. Ho risolto la disattivazione dell'autenticazione anonima sul sito Web predefinito e l'abilitazione dell'autenticazione di Windows sul sito Web predefinito.