2017-05-27 2 views
0

Ich möchte den Zugriff über HTTP Basic Auth für einen bestimmten Pfad einschränken, so dass jemand, der/www/private besucht, zur Authentifizierung aufgefordert wird, aber nicht/www/public,/www/public/Armaturenbrett, ....IIS HTTP Basisauthentifizierung für bestimmte URL

Anmerkung: "private", "public", "Armaturenbrett", etc. sind keine Ordner, aber uRL rewrite

Mein aktueller webconfig:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="Imported Rule 1" stopProcessing="true"> 
       <match url="\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$" ignoreCase="false" negate="true" /> 
       <conditions logicalGrouping="MatchAll"> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> 
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> 
       </conditions> 
       <action type="Rewrite" url="index.php" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
<location path="mysite/www/private"> 
    <system.webServer> 
     <security> 
      <authentication> 
       <anonymousAuthentication enabled="false" /> 
       <basicAuthentication enabled="true" /> 
       <windowsAuthentication enabled="false" /> 
      </authentication> 
     </security> 
    </system.webServer> 
</location> 
<location path="mysite/www"> 
    <system.webServer> 
     <security> 
      <authentication> 
       <anonymousAuthentication enabled="true" /> 
       <basicAuthentication enabled="false" /> 
       <windowsAuthentication enabled="false" /> 
      </authentication> 
     </security> 
    </system.webServer> 
</location> 

Ich a lso enter image description here

jedoch grundlegende Auth und anonyme Autorisierung in IIS-Manager aktiviert das nicht funktioniert - es fordert nie auf Genehmigung

+0

nicht ganz verstanden "Hinweis:" private "," öffentliche "," Dashboard ", etc sind nicht Ordner, aber URL neu schreiben ". Ich sehe keine Rewrite-Regel, die zu privat umschreibt. Könnten Sie die URLs geben, mit denen Sie arbeiten? –

+0

Ich benutze Nette Framework, die dies behandelt. Tut mir leid, ich kenne keine Einzelheiten. Aber der Punkt ist, dass diese URLs keine Ordner sind. – user1762087

Antwort

0

IIS UrlRewrite Modul schreibt die Anforderung, bevor die Authentifizierung Tritte in so mit Ihrem aktuellen Rewrite-Regel, diese Ist nicht möglich.

Exceprts von here

Die URL Rewrite-Modul ist ein native Code-Modul, das in die auf Antrag Verarbeitungspipeline Stecker Pre-beginnen anfordern oder Begin anfordern Stufen und wertet dann den URL-Pfad angefordert mit einer Reihe von Rewrite-Regeln. Jede Rewrite-Regel analysiert den URL-Pfad und ändert den ursprünglichen Pfad in einen neuen Pfad, wenn alle Regelbedingungen erfüllt sind. Nachdem alle Regeln ausgewertet wurden, erstellt das URL-Rewrite-Modul einen endgültigen URL-Pfad, der für die Anforderung über den Rest der IIS-Pipelineverarbeitung verwendet wird. Dies bedeutet, dass die Auswahl des Handlers in der IIS-Pipeline basierend auf der umgeschriebenen URL erfolgt, die vom URL-Rewrite-Modul erstellt wird.

Ihre Rewrite-Regel ist so, dass sie jeden Pfad, der nicht zu einer statischen Datei ist, in index.php umschreibt. Der Rest der IIS-Pipeline sieht den Pfad als index.php. Sie müssen Ihre Authentifizierung in index.php implementieren. Oder Sie können einfach ein einfaches IIS-Modul schreiben, dieses SO question spricht darüber. Sie müssen etwas mehr Logik hinzufügen, um die URL zu überprüfen (wenn enthält www/private) und senden 401 etc.

Verwandte Themen