2009-08-11 5 views
2

Ich erstelle eine DAL für die Verwendung in mehreren Anwendungen, aber ich stelle keine Autorisierung oder Authentifizierung zur Verfügung, um zu überprüfen, dass die aufrufende Anwendung die Berechtigungen zum Ausführen der DAL und Zugriff auf die Daten hat, dh sicherzustellen, dass der Benutzer nur die Informationen sieht Sie dürfen sehen, dass dies die Verantwortung der Business-Ebene ist, diese Regeln zu bestimmen. Letztendlich möchte ich diese Bibliothek zwischen Web- und Desktop-Anwendungen teilen, aber sobald die DAL-Bibliothek den Desktop erreicht, möchte ich nicht, dass ein Benutzer die DAL nimmt und uneingeschränkten Zugriff auf die Daten erhält, die die DAL bereitstellt.Gibt es eine Möglichkeit, eine Ausführungsberechtigung für aufrufende Anwendungen für eine C# -Bibliothek festzulegen?

Gibt es eine Möglichkeit sicherzustellen, dass die aufrufende Anwendung eine genehmigte Anwendung ist? Ich möchte einen Schlüssel oder ein Kennwort vermeiden, die durch jede Funktion oder Klassenerstellung übergeben werden. Idealerweise hätte ich gerne eine Anwendungsebene der DAL, die weiß, dass die Anwendung vertrauenswürdig ist und den Code ausführen kann.

Das ist wahrscheinlich weit hergeholt, aber ich hatte gehofft, dass es vielleicht ein paar kreative Ideen gibt, wie man das Problem lösen könnte oder vielleicht muss ich das Thema anders angehen.

+1

Ist die Berechtigung für die Daten bestimmten Anwendungen oder bestimmten Benutzern mit bestimmten Rollen erteilt? –

+0

Chansik, die Erlaubnis ist sicherzustellen, dass nur "registrierte" Anwendungen die DAL aufrufen. Da mein Ziel ist, eine universelle Version zu haben, die Desktop-Anwendungen, die eine unkontrollierte Umgebung ist, gehen würde. – ewrankin

Antwort

2

Im DAL-Code können Sie nach einer Liste zulässiger Anrufer in der Datenbank suchen lassen.

System.Reflection.Assembly.GetExecutingAssembly() hat wahrscheinlich einige Eigenschaften, die Sie verwenden können, um die autorisierten Anruferinformationen zu speichern.

+0

Sie könnten die 'FullName' -Eigenschaft verwenden und das öffentliche Schlüsseltoken überprüfen. Hier ist ein RE, um es zu extrahieren: 'PublicKeyToken = (? [\ da-fA-F] {16})' –

+0

Danke Elan, das gibt mir den Ausgangspunkt, den ich brauche, um dies zu tun. Obwohl ich einen Schnelltest zur Überprüfung ausgeführt habe und GetCallingAssembly() verwenden muss, vergesse ich immer, was mit der Reflection-Bibliothek verfügbar ist. Danke noch einmal. – ewrankin

Verwandte Themen