401 - Non autorizzato su Server 2008 R2 IIS 7.5


20

Ho un'applicazione Web distribuita nella casella Server 2008 IIS 7.5.

Da remoto, si dà questo errore: 401 - Unauthorized: Access is denied due to invalid credentials. (remoto = desktop sulla stessa LAN)

Ho provato diversi client remoti utilizzando browser diversi, tutti con lo stesso risultato. (IE, FF e Chrome)

Colpire l'applicazione dal desktop del server stesso funziona perfettamente . Tuttavia non ho provato Firebug sul desktop del server. Suppongo che stia ancora emettendo un codice di stato 401 e che comunque restituisca il contenuto. Vedi aggiornamento n. 2.

L'applicazione utilizza l'autenticazione anonima.

L'applicazione è scritta in .NET 4.0 Asp.Net utilizzando il framework MVC.

Il contenuto statico funziona bene, ad esempio: http://server.com/content/image.jpg

Sysinternals procmonrestituisce questi 2 risultati per ogni richiesta: FAST IO DISALLOWED e PATH NOT FOUND.

Ho altre 2 app MVC che funzionano correttamente sullo stesso server. Ho verificato la sicurezza delle cartelle e tutte corrispondono.

L'app funziona perfettamente su una casella Server 2008 IIS 7.0.

Non viene visualizzato nulla nel registro eventi sul server correlato a questo.

Tirando i capelli qui, qualche consiglio per la risoluzione dei problemi?

AGGIORNAMENTO # 1 : Questo è solo più WTF mentre scavo.

Se faccio clic sull'applicazione in Gestione IIS -> Pagine di errore -> Modifica impostazioni funzionalità selezionate Detailed Errors, l'app funziona in remoto. Non lasciarlo acceso, quindi il problema non è ancora risolto, è solo più confuso.

AGGIORNAMENTO # 2 : Usando Firebug, vedo che lo stato è fermo 401 Unauthorized, ma la risposta sta restituendo l'HTML corretto dell'applicazione.

AGGIORNAMENTO # 3 Giocando con Traccia richieste non riuscite, ecco la traccia richieste AVVISO che sta causando il 401:

ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401 
HttpReason Unauthorized 
HttpSubStatus 0 
ErrorCode 0 
ConfigExceptionInfo  
Notification EXECUTE_REQUEST_HANDLER 
ErrorCode The operation completed successfully. (0x0)

Aggiornamento n. 4 Il registro IIS normale mostra questo:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2010-07-20 19:17:22
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-07-20 19:17:22 10.10.1.10 GET /Purchasing/Home - 80 - 10.10.1.12 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.6)+Gecko/20100625+Firefox/3.6.6 401 0 0 4414

Hai provato a eseguire la Traccia richieste non riuscite sul server e ad accedere all'applicazione dal computer remoto. Se si verifica un errore, dovresti vedere la causa.
Vivek Kumbhar,

@vivek guarda il mio ultimo aggiornamento
mxmissile,

ARRG !!! Capito di nuovo! 2 ore sprecate per la ricerca Html.RenderAction, poi Html.Actionho capito che Razor usa così le mie ricerche iniziali sono risultate vuote.
mxmissile,

Oh sono passati un paio d'anni, indovina un po '? Ho appena perso 3 ore stamattina in questo ANCORA! Quando imparerò?!?!?!
mxmissile,

Risposte:


19

A volte devi fare un passo indietro ... La causa di ciò era che Html.RenderAction()a mio avviso avevo un metodo di azione che era contrassegnato con l' [Authorize]attributo.


1
Questo era il mio problema, era abbastanza frustrante dare un pugno a un panda (non che avrei fatto). Grazie mxmissile.
Khalid Abuhakmeh,

4

Dal momento che funziona localmente ma non in remoto, mi sembra che l'account utente anonimo non abbia accesso a qualcosa, ma lo fa l'utente di Windows. Per dimostrarlo, disattiva l'autenticazione di Windows per il sito Web e verifica se si interrompe localmente.

Qualunque cosa si rompa, è probabile che venga eseguita come identità del tuo sito Web anziché come identità del pool di app, altrimenti si spezzerebbe a livello locale e remoto. La mia raccomandazione se si dispone di 1 a 1 mapping dei siti ai pool di app o se si dispone di un ambiente altamente attendibile è di impostare l'account utente anonimo per utilizzare l'identità del pool di app. Quindi non devi preoccuparti di un secondo utente da mantenere.

Hai parlato di Process Explorer. Va bene per trovare informazioni di funzionamento, ma lo strumento che probabilmente scoprirà gli errori di accesso negato è processmon (anche da sistemi sysinternals). Provalo, riproduci e acquisisci, quindi cerca la parola "negato". Dovrebbe sollevare eventuali problemi di accesso negato sul disco.


4

Avrai lo stesso comportamento quando hai un filtro per l'autorizzazione personalizzata che eredita da AuthorizeAttributee una o più chiamate al OnAuthorizationmetodo, con una di esse impostata AuthorizationContext.Resultsu `HttpUnauthorizedResult '


4

Per qualche motivo questo ha risolto il mio problema.

  1. Fai clic sul sito in IIS.
  2. Autenticazione con doppio clic
  3. Fare clic con il tasto destro e selezionare Impostazioni avanzate
  4. Deseleziona "Abilita autenticazione in modalità kernel"

2

Hai controllato le impostazioni in Regole di autorizzazione? Se qualcuno può accedere a questa pagina (che sembra essere il tuo obiettivo) assicurati di avere una regola "Consenti" con "Tutti gli utenti" nella colonna degli utenti.

Quindi in "Autenticazione" assicurati che non vi siano conflitti e sia abilitata solo l'autenticazione anonima.

Spero possa aiutare.


1
Consenti - Tutti gli utenti - Ereditato
mxmissile
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.