2011-01-12 6 views
1

Ich versuche, meine Webanwendung vollständig als AppPool-Benutzer (Domain \ UserForApp) auszuführen, und ich setze die Einstellung korrekt in IIS und alles läuft gut und "System.Security.Principal.WindowsIdentity.GetCurrent(). Name" gibt das korrekte "Domain \ UserForApp" zurück.Wie erzwinge ich die Verwendung von Identitätswechsel in IIS 7+?

aber als ich versuchte, die Berechtigungen meiner Web-App-Verzeichnis auf die nackten Knochen zu beschränken benötigt:

  • System (Vollzugriff)
  • Me (Full Access)
  • Admininstrators (Full Access
  • )
  • UserForApp (lesen)

ich nicht mehr alle statischen Dateien laden konnte. So habe ich heruntergeladen Process Monitor, um herauszufinden, warum und wann immer er versucht, eine statische Datei zuzugreifen, ich die folgende Fehlermeldung erhalten:

ACCESS DENIED: 
Desired Access:  Generic Read 
Disposition:  Open 
Options:   Sequential Access, No Buffering 
Attributes:   RE 
ShareMode:   Read, Write, Delete 
AllocationSize:  n/a 
Impersonating:  NT AUTHORITY\IUSR 

Und wie man aus der obigen IUSR- sieht keine Berechtigungen, so dass richtig ist, aber ich verstehe einfach nicht, warum es sich so auszugeben versucht. In meiner Datei web.config Ich habe:

<location path="" overrideMode="Deny"> 
    <system.web> 
     <identity impersonate="false" /> 
    </system.web> 
</location> 

nur um sicherzustellen, dass niemand auf den Identitätswechsel dreht, aber es hatte keine Wirkung.

Es funktioniert nicht im klassischen und im Pipeline-Modus, aber der Fehler ist etwas anders. In klassischem Format, wenn die Bilder angezeigt werden, zeigt es nur eine HTTP Error 401.3 - Unauthorized Seite, und wenn Sie Pipelined verwenden, wird es auf die Anmeldeseite umgeleitet.

Antwort

1

Wenn Sie die Website wan't wie die App Pool Identität laufen, dann müssen Sie:

<location path="my_site"> 
    <system.webServer> 
     <security> 
      <authentication> 
       <anonymousAuthentication userName="" /> 
      </authentication> 
     </security> 
    </system.webServer> 
</location> 

Sie dies in Ihrer applicationHost.config Datei festlegen können (wahrscheinlich der beste Ort), indem Sie:

APPCMD.exe set config "my_site" -section:system.webServer/security/authentication/anonymousAuthentication /username:"" /commit:apphost 
+0

Das war es. Ich fand das schließlich, aber ich nahm an, dass es nur ein Workaround war. Danke für die Bestätigung für mich. –