web-dev-qa-db-fra.com

Autoriser l'authentification anonyme pour un seul dossier dans web.config?

Voici donc le scénario. J'ai une application Asp.Net qui utilise un fournisseur d’authentification et d’adhésion personnalisé, mais nous devons autoriser un accès totalement anonyme (c.-à-d.) À un dossier particulier de l’application.

Dans le gestionnaire IIS, vous pouvez définir le mode d'authentification d'un dossier, mais les paramètres sont enregistrés dans le fichier C:\Windows\System32\inetsrv\config\applicationHost.configcomme décrit ici

Pour faciliter l’installation, il serait bien que je puisse définir cela dans mon fichier web.config, mais après quelques tentatives, je pense que cela risque de ne plus être possible.

Est-ce que quelqu'un sait autrement?

Merci beaucoup

40
Chris Fewtrell

Utilisez la balise de configuration <location> et <allow users="?"/> pour autoriser le mode anonyme uniquement ou <allow users="*"/> pour tous:

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

La première approche consiste à modifier votre configuration web à l'aide de la balise de configuration <location> et de <allow users="?"/> pour autoriser l'anonymat ou le <allow users="*"/> pour tous:

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

Si cette approche ne fonctionne pas, vous pouvez adopter l'approche suivante, qui nécessite une légère modification du IIS applicationHost.config.

Commencez par modifier le paramètre overrideModeDefault de la section anonymousAuthentication de "Refuser" à "Autoriser" dans C:\Windows\System32\inetsrv\config\config\applicationHost.config:

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

overrideMode est une fonctionnalité de sécurité d'IIS. Si la substitution est interdite au niveau du système dans applicationHost.config, vous ne pouvez rien faire dans web.config pour l'activer. Si vous n'avez pas ce niveau d'accès sur votre système cible, vous devez en discuter avec votre fournisseur d'hébergement ou votre administrateur système.

Deuxièmement, après avoir défini overrideModeDefault="Allow", vous pouvez mettre les éléments suivants dans votre fichier web.config:

<location path="Path/To/Public/Folder">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>
49
Tim Lewis
<location path="ForAll/Demo.aspx">
 <system.web>
  <authorization>
    <allow users="*" />
  </authorization>
 </system.web>
</location>

En plus: Si vous voulez écrire quelque chose sur ce dossier via un site Web, vous devez donner l’autorisation IIS_User sur le dossier.

2
Imran Rizvi

J'ai ajouté web.config dans le dossier spécifique intitulé "Utilisateurs" (VS 2015, C #)

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

Initialement, j'ai utilisé la balise d'emplacement mais cela n'a pas fonctionné.

0
Satbir

Pour que cela fonctionne, je construis mon répertoire comme ceci:

Projet Publique Restreindre

J'ai donc édité mon webconfig pour mon dossier public:

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

Et pour mon dossier restreint:

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

J'espère avoir aidé.

0
Rodrigo