Condividi tramite


Come usare la delega di configurazione in IIS 7.0

di Saad Ladki

Contenuto

Questo articolo illustra come abilitare la configurazione delegata nel server. Illustra come distribuire le impostazioni di configurazione per il server e per le applicazioni, insieme alle pagine del contenuto e al codice dell'applicazione.

Dopo che l'amministratore del computer ha definito l'applicazione o la directory virtuale per l'uso nel file %windir%\system32\inetsrv\config\applicationHost.configdi configurazione master e le sezioni specifiche consentite devono essere delegate, è possibile controllare le impostazioni a livello di applicazione: eseguendo le impostazioni nel file di web.config dell'applicazione, si esegue l'override delle impostazioni predefinite globali. Ciò è possibile se si ha accesso alla directory dell'applicazione, anche se non si è un amministratore locale nel computer.

Dopo aver letto questo documento, si saprà come definire applicazioni e directory virtuali a livello globale, sbloccare le sezioni di configurazione per la delega e eseguire l'override delle impostazioni di configurazione per singole applicazioni a un livello inferiore della gerarchia di configurazione.

Introduzione

IIS consente agli amministratori del computer di delegare l'impostazione e la modifica della configurazione ai proprietari di siti e applicazioni. A tale scopo, usare web.config file nelle directory del contenuto. Questi file specificano le sezioni di configurazione che hanno effetto sul loro livello nella gerarchia e verso il basso. L'amministratore del computer deve sbloccare in modo esplicito le sezioni a livello globale per abilitare tale delega. Per impostazione predefinita, la maggior parte delle sezioni IIS è bloccata per la delega e tutte le sezioni di .NET Framework (incluse le ASP.NET) non vengono bloccate a livello globale.

Questo documento illustra come definire nuove applicazioni e directory virtuali a livello globale (solo gli amministratori di macchine possono eseguire questa attività; non può mai essere delegato).

Questo documento illustra quindi come distribuire xcopy-deploy web.config con il contenuto dell'applicazione per eseguire l'override di alcune impostazioni per il livello specifico. Spiega anche i concetti principali del sistema di configurazione e quindi spiega come eseguire queste attività usando la modifica diretta dei file di configurazione, senza usare l'interfaccia utente o altre astrazioni all'interno del sistema di configurazione.

Prerequisiti

  • Assicurarsi che IIS 7.0 o versione successiva sia installato nel computer. Passare a http://localhost/ da Internet Explorer e vedere che viene aperta la pagina predefinita "Under Construction". Se IIS non è installato, fare riferimento alla How-To di installazione per le istruzioni di installazione.
  • Assicurarsi di avere privilegi amministrativi nel computer. Per impostazione predefinita, non sono disponibili se si è connessi come utente diverso dall'account amministratore predefinito, anche se l'utente è stato aggiunto al gruppo Administrators locale nel computer. Questa è una nuova funzionalità di sicurezza in Windows Server® 2008, denominata LUA, oltre l'ambito di IIS. Accedere come account amministratore predefinito o richiamare in modo esplicito le applicazioni come amministratore predefinito, in base alle esigenze, usando lo strumento "runas" cmd-line:

Ad esempio, per avviare notepad.exe, eseguire questo comando: "runas /user:administrator notepad.exe". Verrà richiesto di specificare la password dell'account amministratore. È utile avere una shell cmd-box già elevata eseguendo "runas /user:administrator cmd.exe". Ogni applicazione eseguita da tale cmd-box è elevata e non è necessario usare la sintassi "runas" da tale cmd-box.

  • Assicurarsi che il file di configurazione master sia sottoposto a backup. Copiare semplicemente applicationHost.config in un file diverso, in modo che sia possibile ripristinarlo in un secondo momento. Nella directory inetsrv\ è disponibile applicationHost.config, che a sua volta si trova nella directory di sistema.

Nota

È necessario essere un amministratore per eseguire questa operazione: vedere il punto puntato precedente sopra.

  • Prima di iniziare, assicurarsi di essere in uno stato "pulito". A tale scopo, è possibile ripristinare le modifiche apportate al file di applicationHost.config negli esercizi precedenti. Se si usa un'immagine VPC, il modo più semplice per eseguire questa operazione consiste nel riavviare l'immagine senza salvare lo stato.
  • È consigliabile disattivare i messaggi di errore HTTP descrittivi in Internet Explorer (Opzioni>strumenti>avanzate) per la risoluzione dei problemi più rapida.

Passaggio 1: Definire una nuova applicazione

  1. Usando un editor di testo, ad esempio Blocco note, aprire il file ApplicationHost.config nel percorso seguente:

    %windir%\system32\inetsrv\config\applicationHost.config
    
  2. Passare alla <sites> sezione, simile alla seguente:

    <sites>
        <siteDefaults>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </siteDefaults>
         <applicationDefaults applicationPool="DefaultAppPool"/>
         <site name="Default Web Site" id="1">
            <bindings>
              <binding protocol="http" bindingInformation="*:80:" />
            </bindings>
                    <application path="/">
              <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
            </application>
             <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </site>
    </sites>
    
  3. Verificare che il server Web sia in esecuzione e che sia possibile accedere al sito Web predefinito. A tale scopo, avviare il browser e la richiesta http://localhost/

  4. La richiesta deve restituire una pagina Web. In caso contrario, avviare il server IIS digitando "net start w3svc" dalla casella di comando o risolvere i problemi usando il visualizzatore log eventi di Windows.

  5. Nel browser richiedere http://localhost/

    Questa richiesta non restituisce una pagina (viene visualizzata una pagina di errore), perché il percorso virtuale non è ancora definito nella configurazione, questa è la procedura successiva.

  6. Nel file ApplicationHost.config aggiungere un elemento con percorso "/app" che include un <application> elemento di primo livello<virtualDirectory>. La directory virtuale di primo livello è una con percorso "/". Per il percorso fisico della directory virtuale, specificare C:\tmp(o qualcosa di simile a quello che verrà usata in seguito).

    Al termine, le <sites> sezioni sono simili alle seguenti:

    <sites>
        <siteDefaults>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </siteDefaults>
         <applicationDefaults applicationPool="DefaultAppPool"/>
         <site name="Default Web Site" id="1">
           <bindings>
             <binding protocol="http" bindingInformation="*:80:" />
           </bindings>
                   <application path="/">
             <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
           </application>
           <application path="/app" >
            <virtualDirectory path="/" physicalPath="C:\tmp" />
          </application>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </site>
    </sites>
    

    È stata appena definita una nuova applicazione nel file di configurazione.

  7. Nel browser richiedere http://localhost/

    Il server Web restituisce una pagina di errore, dicendo che l'esplorazione della directory non è abilitata. Ciò accade perché non si dispone ancora di contenuto in c:\tmp, quindi il server gestisce la richiesta come richiesta per esplorare la directory. Copiare iisstart.htm dalla \inetpub\wwwroot directory in c:\tmp e aggiornare il browser. A questo momento viene visualizzata la pagina In Costruzione.

Passaggio 2: Sbloccare le sezioni di configurazione

  1. Usando un editor di testo, ad esempio Blocco note, aprire applicationHost.config e individuare il gruppo di <sezioni di autenticazione> .

  2. Spostare le <sezioni e <windowsAuthentication> l'autenticazione> anonima dal percorso corrente nel file in un nuovo tag di percorso nella parte inferiore del file con overrideMode="Allow", come indicato di seguito:

    <configuration>
      <system.webServer>
        <security>
          <authentication>
           <!-- cut the anonymousAuthentication and windowsAuthentication -->
           <!-- XML elements from this area in the file, and paste below  -->
          </authentication>
        </security>
      </system.webServer>
       <location overrideMode="Allow">
        <system.webServer>
          <security>
            <authentication>
              <!-- paste the 2 sections from above here -->
            </authentication>
          </security>
        </system.webServer>
      </location>
    </configuration>
    

    Queste sezioni sono ora sovrascrivibili a livelli inferiori dello spazio dei nomi, perché si trovano in un tag di percorso che specifica overrideMode="Allow". Tutti i file di web.config di livello inferiore possono ora eseguire l'override di queste impostazioni.

Passaggio 3: Eseguire l'override delle impostazioni a livello di applicazione

  1. Usando un editor di testo, ad esempio Blocco note, creare un nuovo file di testo nella cartella dell'applicazione ,ad esempio c:\tmp, denominata web.config.

  2. Nel file web.config creare un elemento e un <configuration><system.webServer> elemento come figlio. All'interno dell'elemento <system.webServer> creare un <security> elemento contenente un <authentication> elemento.

  3. Immettere le impostazioni per disabilitare gli schemi di autenticazione autenticazione di Windows e anonimi, attivati per impostazione predefinita a livello globale.

    Al termine, il file di web.config è simile al seguente:

    <configuration>
      <system.webServer>
        <security>
          <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
          </authentication>
        </security>
      </system.webServer>
    </configuration>
    
  4. In un browser richiedere http://localhost/app.

    Nota

    Non è autorizzato a visualizzare la pagina perché tutti i metodi di autenticazione vengono disabilitati in questa pagina nel file di web.config.

  5. Nel browser richiedere http://localhost/ e verificare che sia possibile accedere alla pagina. La configurazione nel file di web.config si applica solo a livello di applicazione.

  6. Nel file web.config abilitare l'autenticazione di base aggiungendo un <basicAuthentication> elemento con il relativo attributo abilitato impostato su true.

    Al termine, il file di web.config è simile al seguente:

    <configuration>
      <system.webServer>
        <security>
          <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
           <basicAuthentication enabled="true" />
          </authentication>
        </security>
      </system.webServer>
    </configuration>
    
  7. Richiedere http://localhost/app di nuovo. Viene visualizzata una pagina di errore che indica che alcune configurazioni sono bloccate a livello globale e i file di web.config tentano di eseguire l'override, pertanto si tratta di un errore di configurazione. Per risolvere questo problema, consentire l'override della <sezione basicAuthentication> a livello globale (applicationHost.config), come è stato fatto per le due altre sezioni. Aggiornare quindi il browser .

    Verrà ora richiesto un nome utente e una password, che indica che si sta eseguendo l'autenticazione di base.

  8. Immettere il nome utente e la password dell'utente connesso e notare che la pagina viene visualizzata.

    Se si richiede http://localhost/, non verrà richiesto di immettere il nome utente e la password, perché le modifiche apportate alla configurazione apportate si applicano solo a livello di applicazione.

    Nota

    Il server e il browser memorizzano entrambi nella cache il token utente. Se si vuole iniziare da zero e non viene più visualizzato il prompt dei nomi utente, chiudere il browser e arrestare il processo di lavoro IIS (o eseguire "net stop /y http" dalla riga di comando di Windows, quindi "net start w3svc", per riavviare IIS).

Riepilogo

Questo documento illustra come definire applicazioni e directory virtuali nel file di configurazione master, applicationHost.config. Illustra anche come distribuire file di configurazione specifici dell'applicazione che contengono le impostazioni del server nella <system.webServer> sezione . È possibile aggiungere impostazioni al file web.config nel <system.web> gruppo di sezioni, ad esempio ASP.NET impostazioni.

È consigliabile impostare elenchi di controllo di accesso (ACL) nel file web.config o nell'intera directory dell'applicazione in modo che gli utenti non amministrativi non possano accedere al file.