2011-09-28 5 views
8

Abbiamo un'applicazione ASP.NET su ASP.NET 4.0 che utilizza MVC 3 che utilizza l'autenticazione di Windows.Problemi di autenticazione ASP.NET su IIS7 - User.Identity.Name è vuoto per l'autenticazione di Windows

Quando eseguito da Visual Studio 2010, tutto funziona come previsto ma quando viene eseguito il roll out su IIS7, l'utente che ha eseguito l'accesso a Windows non viene mai compilato (verifica User.Identity.Name). Nessuna richiesta di dialogo per le credenziali dell'utente.

L'impostazione web.config:

<authentication mode="Windows" /> 

In IIS Vedo che l'autenticazione di Windows è attivato, come è anonimo (disabilitando risultati anonimi in un 403 Forbidden e nessun contenuto viene mostrato).

Ho provato ad abilitare e disabilitare "Kernel-mode authentication" (useKernelMode = "true"), ma questo non sembra fare alcuna differenza. Anche se ricordo che dovevamo disabilitare questa impostazione su un altro sito su un server diverso per far funzionare correttamente l'autenticazione (potrebbe indicare un potenziale problema più in basso nello stack?).

Nel caso in cui è utile, dal applicationHost.config di IIS:

<security> 
    <authentication> 
    <anonymousAuthentication enabled="true" /> 
    <digestAuthentication enabled="false" /> 
    <basicAuthentication enabled="false" /> 
    <windowsAuthentication enabled="true" useKernelMode="false"> 
     <providers> 
     <clear /> 
     <add value="NTLM" /> 
     </providers> 
    </windowsAuthentication> 
    </authentication> 
</security> 

Tutte le idee che il problema potrebbe essere?

Grazie in anticipo per eventuali suggerimenti.

Update 1

sono riuscito a trovare un altro server IIS7 per testare su e ho trovato, se ho disabilitato l'accesso anonimo tutto ha funzionato, se lo desideri. Tuttavia ho ancora problemi con il server IIS7 originale anche quando disabilito l'accesso anonimo (sto mantenendo Anonymous disabilitato ora). Quindi ci deve essere qualche problema più in basso, credo. Qualche idea? Qualcosa che devo aggiustare perché continuerà a spuntare e a mordicchiarmi. Immagino.

Update 2

Se abilitare l'autenticazione Digest sulla scatola IIS7 problema allora io sono sfidato con la finestra di prompt di login e tutto funziona come previsto se fornisco le credenziali adatte. Ma essendo un'app Web interna con utenti già registrati nel dominio, non vogliamo davvero sfidarli in questo modo. Le credenziali dovrebbero essere passate attraverso in modo trasparente poiché funziona sulla seconda casella di IIS7.

Update 3

alcuni progressi ... Ho scoperto che se l'applicazione web è nella radice e non un sito secondario poi modificando direttamente il file applicationHost.config per IIS7 per dare il seguente di autenticazione impostazioni permette al sito di funzionare come previsto:

<authentication> 
    <anonymousAuthentication enabled="false" /> 
    <windowsAuthentication enabled="true"> 
    <providers> 
     <clear /> 
     <add value="NTLM" /> 
    </providers> 
    </windowsAuthentication> 
    <digestAuthentication enabled="false" /> 
</authentication> 

con UI di IIS7 per configurare l'autenticazione non dà abbastanza i giusti risultati. gli elementi di autenticazione mancano dopo i reparti (poiché suppongo che IIS7 si assuma che siano ereditati) o hanno le impostazioni sbagliate (WindowsAuthentication sembra aver bisogno della configurazione dei provider sopra presente per funzionare correttamente).

Purtroppo l'applicazione Web in questione è in realtà un'applicazione secondaria in quanto esiste una versione interna (utilizzando l'autenticazione di Windows> www.site.it/interna) e una versione esterna (utilizzando l'autenticazione moduli> www.site.com/external). Non riesco ancora a ottenere l'autenticazione per funzionare come una sub-applicazione ancora. Ho appena ricevuto un "Error Code: 403 Forbidden".

+0

controllare questo uno: http://stackoverflow.com/questions/1067591/user-identity-name-blank-in-asp-net-mvc –

+0

con quale browser si sta effettuando il test? Se si tratta di Firefox, si potrebbe voler controllare: https://addons.mozilla.org/en-US/firefox/addon/integrated-auth-for-firefox/ Firefox non ha l'autenticazione di Windows "abilitata" correttamente fuori dal scatola. – NotMe

+0

Saluti Davide, ma niente ci ha aiutato. Questo tipo sembrava avere problemi nel far funzionare l'autenticazione di Windows perché aveva perso le impostazioni di web.config (quindi non poteva lavorare in VS o IIS). Tutto funziona bene per me in VS, è solo IIS che le cose non si comportano come previsto. – Gavin

risposta

3

In questo caso si trattava di un problema Microsoft ISA Server. Sembra che la richiesta sia stata instradata internamente tramite ISA per il sito Windows Authenticated, una volta rimosso ISA il problema è scomparso.

Non so molto su ISA e su come instradare le richieste, ma presumo che debba aver rimosso alcune informazioni importanti dalla richiesta a causa di alcune regole che qualcuno ha configurato.

Come nota a margine nel caso in cui aiuti a diagnosticare configurazioni simili: lo staff dell'amministratore di rete mi ha detto che il traffico interno non era instradato attraverso ISA, ma il ping del sito web internamente mostrava che ISA era effettivamente in gioco.

0

Hai accennato al fatto che disabilitare l'accesso anonimo ha funzionato su un altro server, ma sul tuo server principale si verificano 403 errori. Pertanto, vorrei controllare le autorizzazioni basate su file sulla cartella da cui il tuo sito è in esecuzione. In passato dovevo concedere l'account \ Serivce di rete al completo controllo della cartella del sito e di tutte le sottocartelle o avrei riscontrato 403 errori. Controlla le autorizzazioni del file sul server che funziona e controlla se ci sono differenze con il server che non funziona.

Inoltre, se questo non è il problema, ti consiglio di confrontare tutte le altre impostazioni IIS tra i due server, poiché sai che funziona su uno e non sull'altro. Trova le differenze.

+0

Grazie Paige, ma ancora nessuna gioia. Il servizio di rete ha le autorizzazioni complete per le cartelle e viene anche utilizzato dal pool di app. Sto confrontando i server, ma non ci sono differenze evidenti finora. Mi chiedo se è qualcosa che ha a che fare con la configurazione di AD in modo diverso per le diverse caselle. Troverà giù un membro del team operativo per cercare di indagare ulteriormente. – Gavin

+0

@ Guadagna, è necessario verificare le autorizzazioni per l'identità del pool di applicazioni che non devono necessariamente essere il servizio di rete. – VinayC

+0

@VinayC - evviva. In questo caso, il servizio di rete è in uso da app Il servizio PoolNetwork dispone inoltre di autorizzazioni complete per i percorsi dei file. – Gavin