Ich habe eine Klassenbibliothek, die meine Datenbankzugriffsschicht enthält, und ich benutze sie in allen meinen Projekten, die mit dieser Datenbank arbeiten. Jetzt möchte ich Sicherheit in diese Bibliothek integrieren, damit ich verschiedene Daten für verschiedene Sicherheitsrollen zurückgeben kann. Was ist der beste Weg, dies mit .NET Build-in-Sicherheit zu erreichen? Ich habe über die Verwendung von System.Security.Permissions.PrincipalPermission nachgedacht, aber ich kann nicht sehen, wie es mir helfen kann, weil jeder, der meine Bibliothek benutzt, Client-Anwendungen wie diese schreiben kann
%Vor%Und sie werden alle meine grundsätzlichen Genehmigungsanforderungen bestehen
%Vor%ohne überhaupt zu authentifizieren. Entweder verstehe ich dieses Sicherheitsmodell nicht oder es sichert nichts.
Rollenbasierte Sicherheit ist eine Möglichkeit für Bibliothekscode, das vom Kunden gewählte Sicherheitsmodell zu verwenden, ohne die Implementierung zu kennen. Der Schlüssel liegt dabei darin, dass Sie bereits an einem Punkt sind, an dem das Sicherheitsmodell des Kunden vernünftigerweise vertrauenswürdig ist, und Sie nur geeignete Optionen auf der Grundlage von Entscheidungen des Kunden anbieten möchten (z. B. im Rahmen eines Anmeldeprozesses). p>
Wenn Sie nicht dem Kunden vertrauen, sind alle Wetten auf sowieso gesetzt, da sie einfach nur Reflektion verwenden können, um Ihre Interna in Fetzen zu reißen. In diesem Szenario wäre es besser, diesen Implementierungscode privat zu halten, beispielsweise über einen Web-Service, der die Anmeldeinformationen des Benutzers in irgendeiner Weise akzeptiert. Dann können sie nur Konten sein, für die sie die Anmeldeinformationen haben.