2011-08-16 12 views
5

Abbiamo un sito intranet IIS7 in esecuzione su una pipeline integrata che è in genere ASP.Net con alcune pagine legacy classiche ASP. Il sito consente l'accesso anonimo alla maggior parte delle aree, ma utilizza l'autenticazione di Windows per proteggere determinate cartelle. Le richieste alle pagine ASP.Net nelle cartelle protette si comportano come previsto (gli utenti autorizzati possono vederle, altre negate), ma qualsiasi utente può vedere qualsiasi pagina ASP classica nelle cartelle protette, indipendentemente dalle autorizzazioni.L'autenticazione di Windows non funziona per le pagine ASP classiche (ma funziona per le pagine ASP.Net w/nello stesso sito)

Sospetto che il modulo di autenticazione di Windows non venga invocato per le richieste alle pagine ASP classiche. Siamo in esecuzione in modalità pipeline integrata e ho trovato questo articolo (http://learn.iis.net/page.aspx/244/how-to-take-advantage-of-the-iis7-integrated-pipeline/) che indica che è necessario rimuovere e aggiungere nuovamente moduli in modo esplicito se si desidera sfruttare la pipeline integrata per richieste non-ASP.Net. Ho provato a copiare l'esempio del articolo solo sostituendo FormsAuthenticationModule con WindowsAuthenticationModule aggiungendo quanto segue al file web.config nella directory principale dell'applicazione:

<system.webServer> 
<modules> 
     <remove name="WindowsAuthentication" /> 
     <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="" /> 
</modules> 
</system.webServer> 

Tuttavia, le pagine ASP classico sono ancora serviti indipendentemente dal permesso.

risposta

2

Le pagine ASP classiche ignorano completamente web.config o qualsiasi .config in realtà.

L'unico modo per gestire questo ASP classico è tramite IIS, sarà necessario spostare le pagine ASP classiche in un sito Web virtuale separato, quindi per quel sito Web virtuale impostare Autenticazione Windows e disabilitare l'accesso anonimo.

Questo potrebbe aiutare così:
IIS7: Setup Integrated Windows Authentication like in IIS6

+0

Grazie @shadowWizard, ma sono confuso. Ho pensato che uno dei vantaggi della pipeline integrata era che si poteva applicare la sicurezza ASP.Net a qualsiasi richiesta (ASP.Net, ASP classico, persino contenuto statico - html e immagini). Dall'articolo a cui mi sono collegato: "Consentire ai servizi forniti dai moduli sia nativi che gestiti di applicarsi a tutte le richieste, indipendentemente dal gestore. Ad esempio, l'autenticazione basata su moduli gestiti può essere utilizzata per tutto il contenuto, incluse pagine ASP, CGI e file statici. " Se è possibile applicare l'autenticazione basata sui moduli gestiti, perché non è possibile l'autenticazione di Windows gestita? –

+0

Non sono esperto in questo, ma quello che so è che l'autenticazione di Windows indica quanto segue: il server invia al browser del client un po 'di intestazione che dice "Per favore identificatevi". Il browser client invia automaticamente le credenziali o chiede all'utente di digitarle, a seconda del tipo e delle impostazioni del browser. Ora, tutto questo sta accadendo "dietro le quinte" e nel basso livello della comunicazione browser/server. L'autenticazione basata su moduli è di livello superiore. Questa è la mia opinione su questo, spero che qualcuno che conosce meglio apparirà e lo spiegherà in modo più accurato. –

Problemi correlati