webentwicklung-frage-antwort-db.com.de

Zulassen anonymer Authentifizierung für einen einzelnen Ordner in web.config?

Hier ist das Szenario: Ich habe eine Asp.Net-Anwendung, die einen benutzerdefinierten Authentifizierungs- und Mitgliedschaftsanbieter verwendet, aber wir müssen vollständig anonymen Zugriff (d. H.) Auf einen bestimmten Ordner in der Anwendung zulassen.

Im IIS - Manager können Sie den Authentifizierungsmodus eines Ordners festlegen. Die Einstellungen werden jedoch in der C:\Windows\System32\inetsrv\config\applicationHost.config-Datei gespeichert, wie hier beschrieben.

Um die Installation zu vereinfachen, wäre es toll, wenn ich dies in meiner web.config einstellen könnte, aber nach ein paar Versuchen glaube ich, dass dies möglicherweise nicht möglich ist.

Weiß jemand anders?

Danke vielmals

40
Chris Fewtrell

Verwenden Sie <location> Konfigurationstag und <allow users="?"/>, um nur anonym zuzulassen, oder <allow users="*"/> für alle:

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

Der erste Ansatz besteht darin, Ihre web.config mit dem <location>-Konfigurationstag und <allow users="?"/> zu ändern, um anonyme oder <allow users="*"/> für alle zuzulassen:

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

Wenn dieser Ansatz nicht funktioniert, können Sie den folgenden Ansatz verwenden, der eine kleine Änderung der IIS applicationHost.config erfordert.

Ändern Sie zunächst den overrideModeDefault-Abschnitt des anonymousAuthentication-Abschnitts von "Deny" in "Allow" in "C:\Windows\System32\inetsrv\config\applicationHost.config":

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

overrideMode ist eine Sicherheitsfunktion von IIS. Wenn das Überschreiben auf systemebene in applicationHost.config nicht zulässig ist, können Sie in web.config nichts tun, um es zu aktivieren. Wenn Sie nicht über diese Zugriffsebene auf Ihrem Zielsystem verfügen, müssen Sie diese Diskussion mit Ihrem Hosting-Provider oder Systemadministrator aufnehmen.

Zweitens können Sie nach der Einstellung von overrideModeDefault="Allow" Folgendes in Ihre web.config einfügen:

<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>

Zusätzlich: Wenn Sie über die Website etwas in diesen Ordner schreiben möchten, müssen Sie dem Ordner IIS_User-Berechtigung erteilen

2
Imran Rizvi

Ich fügte web.config zu dem bestimmten Ordner hinzu, beispielsweise "Benutzer" (VS 2015, C #) Und den folgenden Code

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

Anfangs habe ich Location Tag benutzt, aber das hat nicht funktioniert.

0
Satbir

Damit es funktioniert, baue ich mein Verzeichnis so auf:

Projekt Öffentlichkeit Beschränken

Also habe ich meine Webconfig für meinen öffentlichen Ordner bearbeitet:

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

Und für meinen eingeschränkten Ordner:

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

Ich hoffe ich habe geholfen.

0
Rodrigo