2012-04-27 17 views
35

Quindi, ecco lo scenario, ho un'applicazione Asp.Net che utilizza un provider di appartenenza dell'autenticazione personalizzata & ma dobbiamo consentire l'accesso completamente anonimo (ad es.) A una particolare cartella all'interno dell'applicazione.Consentire l'autenticazione anonima per una singola cartella in web.config?

in Gestione IIS, è possibile impostare la modalità di autenticazione di una cartella, ma le impostazioni vengono salvate all'interno del file C:\Windows\System32\inetsrv\config\applicationHost.configas described here

Per facilitare l'installazione, sarebbe bello se potessi impostare questo nel mio web.config ma dopo un paio di tentativi, penso che questo potrebbe non essere possibile.

Qualcuno sa altrimenti?

Molte grazie

+0

Perché si desidera consentire l'anonimo a quella cartella? –

+0

La maggior parte dell'app deve essere accessibile solo alle persone che hanno acquistato l'accesso, ma vogliamo esporre alcuni contenuti gratuiti al mondo esterno (per invogliare le persone ad acquistare l'accesso). –

+0

la sua domanda e risposta più comune è molto semplice come dato –

risposta

35

Usa <location> tag di configurazione, e <allow users="?"/> per consentire solo anonima o <allow users="*"/> per tutti:

<configuration> 
    <location path="Path/To/Public/Folder"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 
+10

Questo è quello che ho provato per la prima volta ma non funziona. Sospetto che queste impostazioni di autorizzazione della posizione abbiano effetto solo quando sono in esecuzione con l'autenticazione Forms. –

+0

che sembra essere il caso di Chris Fewtrell. Certamente, con l'autenticazione di Windows, non sembra importare a cosa li si imposta. – mattpm

2
<location path="ForAll/Demo.aspx"> 
<system.web> 
    <authorization> 
    <allow users="*" /> 
    </authorization> 
</system.web> 
</location> 

Inoltre: Se si vuole scrivere qualcosa su quella cartella attraverso il sito web , devi concedere l'autorizzazione IIS_User alla cartella

41

Il primo approccio da adottare è modificare il tuo web.config utilizzando il tag di configurazione <location>, e <allow users="?"/> per consentire anonima o <allow users="*"/> per tutti:

<configuration> 
    <location path="Path/To/Public/Folder"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 

Se questo approccio non funziona allora si può prendere il seguente approccio che richiede facendo una piccola modifica al IIS applicationHost .config.

In primo luogo, modificare overrideModeDefault della sezione anonymousAuthentication da "Nega" a "Consenti" in C: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config:

<section name="anonymousAuthentication" overrideModeDefault="Allow" /> 

overrideMode è una caratteristica di sicurezza di IIS. Se override non è consentito a livello di sistema in applicationHost.config, non c'è nulla che tu possa fare in web.config per abilitarlo. Se non si dispone di questo livello di accesso sul sistema di destinazione, è necessario avviare tale discussione con il proprio provider di hosting o amministratore di sistema.

In secondo luogo, dopo aver impostato overrideModeDefault="Allow" allora si può mettere quanto segue nel web.config:

<location path="Path/To/Public/Folder"> 
    <system.webServer> 
    <security> 
     <authentication> 
     <anonymousAuthentication enabled="true" /> 
     </authentication> 
    </security> 
    </system.webServer> 
</location> 
+0

-1 che dire di non hosting locale? quando non hai accesso a apphost.conf? – Dementic

+8

Il post originale faceva specifico riferimento al file applicationHost.config. Un voto negativo su una risposta sembra duro per il post originale che non corrisponde ai limiti specifici del tuo scenario. –

+0

"Sarebbe bello se potessi impostare questo nel mio web.config" – Dementic

0

di farlo funzionare Costruisco il mio elenco come questo:

Progetto Public Limitare

Così ho modificato il mio webconfig per la mia cartella pubblica:

<location path="Project/Public"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

e per la mia cartella con restrizioni:

<location path="Project/Restricted"> 
    <system.web> 
     <authorization> 
     <allow users="?"/> 
     </authorizatio> 
    </system.web> 
    </location> 

Spero di aver aiutato.

0

Ho aggiunto Web.config nella cartella specifica dire "Users" (VS 2015, C#) e al codice seguente aggiunto

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <authorization>  
    <deny users="?"/> 
    </authorization> 
</system.web> 
</configuration> 

Inizialmente ho usato posizione tag ma che non ha funzionato.

Problemi correlati