Hallo,
ich habe eine WebForms-Anwendung mit einer laufend wachsenden Zahl an Kunden, die darin verwaltet werden. Zur Authentifizierung verwende ich FormsAuthentication.
Jeder Kunde soll nun die Möglichkeit bekommen, in einem Verzeichnis für sich und alle zum Kunden gehörenden Benutzer HTML-Seiten abzulegen, z.B. mit einer Beschreibung.
Dazu lege ich nun in meiner Webanwendung in einem Ordner für jeden Kunden anhand seiner Kundennummer einen neuen Ordner an, in dem er die HTML-Seiten ablegen kann. Ich habe dann im Webserver eine Ordnerstruktur:
CustomerData
-1
- infos1.html
- infos2.html
-3
- beschreibung.html
-4
Kann ich nun irgendwie verhindern, das ein Benutzer von Kunde 3 die HTML-Seiten von Kunde 1 aufrufen kann, ohne in der web.config nun für jedes Verzeichnis einen Eintrag machen zu müssen?
Du willst ein Mehrmandantensystem; ergo muss das Deine Logik vollständig abdecken - oder Du baust Dir eine Mehrmandanten-Datenbank.
Weder ASP.NET Konfigurationsmaßnahmen noch der IIS helfen Dir da.
PS: sofern es sich um Kundendaten handelt, musst Du im Hinblick besonders sorgfältig im Rahmen von GDPR sein.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
also ich bin schon davon überzeugt, das mir der IIS und ASP.Net da helfen können. Die einfachste Methode wäre es, in jedem Mandantenordner eine web.config abzulegen, in der ich mit
<system.web>
<authorization>
<deny users="*"/>
<allow roles="Mandant3"
</authorization>
</system.web>
den Zugriff auf eine Rolle einschränke. Nur ich müsste halt für jedes Verzeichnis eine web.config mit dem passenden Inhalt bei allow roles erstellen und im Verzeichnis ablegen. Die Rolle bekommt der Benutzer dann halt beim Login anhand seiner Mandantschaft(en) zugewiesen.
Da frage ich mich halt, ob das nicht einfacher geht
Du kannst das ruhig so machen, aber das ist dann ziemlich unsicher und schei*e.
Und nein, Dein Forms-Login kann hier nicht verwendet werden. Das würde in der Form nur bei Windows-Authentication funktionieren.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Weil Du physikalischen Zugriff nach Außen freigibst.
Eine falsche NTFS Einstellung - zB. durch ein unbedachtes Konfigurieren - und die gesamte Festplatte ist (theoretisch) zugreifbar.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code