Ich habe einen Webserver von wo Benutzer Dateien herunterladen können, die für jeden Benutzer spezifisch sind. Um sicher zu sein, dass jeder Benutzer nur seine eigenen Dateien herunterladen kann, muss er sich über Basic-Authentication authentifizieren. Für jeden Benutzer gibt es also einen Windows-Account auf dem Server, der Berechtigungen für den benutzerspezifischen Ordner hat.Web.config erlauben Standort Zugriff für bestimmte Benutzer
Jetzt möchte ich diese Funktionalität auf einen anderen Server verschieben. Ich möchte keine Windows-Konten für die Benutzer erstellen, aber die Basis-Authentifizierung beibehalten. Also verwende ich die Custom Basic Authentication HTTP Module in Kombination mit einer Custom MembershipProvider, die ich Benutzer in der web.config definieren kann.
Die Authentifizierung funktioniert recht gut, aber nachdem sich mit entweder jack
anmelden oder jill
(siehe web.config) Ich bin in der Lage, beiden Standorte Dir1
und Dir2
zuzugreifen. Dies ist auch der Fall, wenn ich den <allow users="jack" />
Teil in den Standort-Tags auskommentiere.
Zusätzliche Information: habe ich eine Datei Default.aspx und hat eine
<% Response.Write(HTTPContext.Current.User.Identity.Name) %>
, die den richtigen Benutzernamen in Abhängigkeit davon gibt, der angemeldet
<% Response.Write(HTTPContext.Current.User.Identity.IsAuthenticated) %>
gibt Wahr zurück..
Was muss ich tun, dass nur jack
der Lage ist, den Zugang (= Download-Dateien aus) Dir1
und nur jill
der Lage ist, den Zugang (= Download-Dateien aus) Dir2
aber nicht umgekehrt?
EDIT: Ich habe versucht, web.config-Dateien für jedes Unterverzeichnis statt der Standort-Tags wie von utkai erwähnt hinzufügen - mit dem gleichen Ergebnis. Jeder Benutzer kann auf jedes Verzeichnis zugreifen.
Hier ist meine Datei Web.config:
<configuration>
<system.webServer>
<modules>
<add name="CustomBasicAuthentication" type="LeastPrivilege.CustomBasicAuthentication.CustomBasicAuthenticationModule, LeastPrivilege.CustomBasicAuthenticationModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=F20DC168DFD54966"/>
</modules>
<security>
<authentication>
<customBasicAuthentication enabled="true" realm="TEST" providerName="AspNetWebConfigMembershipProvider" cachingEnabled="true" cachingDuration="15" requireSSL="false"/>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</security>
</system.webServer>
<system.web>
<membership defaultProvider="AspNetWebConfigMembershipProvider">
<providers>
<add name="AspNetWebConfigMembershipProvider" type="LeastPrivilege.AspNetSecurity.Samples.WebConfigMembershipProvider, WebConfigMembershipProvider"/>
</providers>
</membership>
<authentication mode="Forms">
<forms>
<credentials passwordFormat="Clear">
<user name="jack" password="jack"/>
<user name="jill" password="jill"/>
</credentials>
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
<location path="Dir1" allowOverride="false">
<system.web>
<authorization>
<!-- <allow users="jack" /> -->
<deny users="*" />
</authorization>
</system.web>
</location>
<location path="Dir2" allowOverride="false">
<system.web>
<authorization>
<!-- <allow users="jill" /> -->
<deny users="*" />
</authorization>
</system.web>
</location>
</configuration>
Ich brauche etwas Zeit für meine Forschungsarbeit. Wird dich bald aktualisieren. – Pankaj
** Ich kann auf beide Standorte zugreifen Dir1 und Dir2 ** Haben Sie Directory Browsing in Ihrem Webserver IIS aktiviert? – Pankaj
Nein Ich habe keine Verzeichnissuche aktiviert. Was ich meinte war, dass ich Dateien, die in diesen Verzeichnissen enthalten sind, ansehen/herunterladen kann, unabhängig davon, welcher Benutzer sich angemeldet hat. –