|
|
||||||
|
#1
|
|
|
|
|
Hallo,
ich möchte mal in die Runde fragen, wie Ihr eure wpf-Applikationen intern schützt. Also dass ein User, der sich eingeloggt hat nur die Masken sieht, die er darf und auf den Masken nur die Felder editieren kann, die seiner Berechtigung entsprechen. WPF bietet sehr viel Funktionalität, aber geht auch etwas in diese Richtung? Bisher habe ich noch nichts gefunden. Ich denke, dass man für diese Anwendungen sehr schnell mit XAML am Ende ist und man doch ziemlich viel Codieren muss. Nehmen wir ein Beispiel: Wir haben eine Maske, die Buchhaltungsdaten eines Kunden anzeigt. Logt sich jemand aus der Auftragserfassung ein, darf er zwar die Rabattstufe des Kunden sehen, aber nicht editieren. Ein weiteres Feld ist der Jahresumsatz dieses Kunden, dafür hat er nicht einmal die Leserechte. Wie baut ihr sowas? Wenn man die Maske mit XAML definiert hat, müsste man ja wahrscheinlich zur Laufzeit die Rechte des Benutzers ermitteln, das Feld mit der Rabattstufe auf Readonly setzen und im Feld mit dem Jahresumsatz könnte man eventuell, das Binding entfernen. Das sind die Möglichkeiten, die ich als 'noch' Laie sehe. Was habt ihr so für Patterns für mein Problem? Gruss Michel |
|
|
|
#2
|
|
|
|
|
Hallo,
wir benutzen hier gerne den vollen Vor- und Zunamen als Usernamen. > ich möchte mal in die Runde fragen, wie Ihr eure wpf-Applikationen > intern schützt. Also dass ein User, der sich eingeloggt hat nur die > Masken sieht, die er darf und auf den Masken nur die Felder editieren > kann, die seiner Berechtigung entsprechen. Meinst Du im Browser gehostete WPF-Anwendungen? Bei den anderen gelten eigentlich die Standards, wie auch in Windows Forms Apps, etwa: [Rollenbasierte Sicherheit] http://msdn.microsoft.com/de-de/library/52kd59t0.aspx Habt ihr ActiveDirectory, wollt ihr irgendwelche besondern Ansprüche an Authentifizierungs- Technologien (CardSpace, etc.) einsetzen? ciao Frank |
|
#3
|
|
|
|
|
Hallo,
bei uns geht's eigentlich mehr um Desktopanwendungen. Aber wie die Security implementiert ist, stellt eigentlich nicht das Problem dar. Mir geht es eher um die Reaktion im GUI. Muss manin wpf doch noch an jedes Control selber Hand anlegen, oder gibt es da bereits etwas in wpf integriert? Schön wäre doch, wenn jedes Control irgendwo anfragen würde, ob der aktuelle Benutzer es editieren, respektive ansehen darf. Gruss Michel |
|
#4
|
|
|
|
|
Hallo Michel,
ah, danke für die Anpassung des Usernamens. > bei uns geht's eigentlich mehr um Desktopanwendungen. Aber wie die > Security implementiert ist, stellt eigentlich nicht das Problem dar. > Mir geht es eher um die Reaktion im GUI. Muss manin wpf doch noch an > jedes Control selber Hand anlegen, oder gibt es da bereits etwas in > wpf integriert? Also, das ist eher ein seltenes Szenario. Das ist weder in Windows Forms noch in WPF so *direkt* vorimplementiert. Aber es ist nun auch nicht wirklich schwer zu implementieren: Du könntest bzgl. des GUI-Mechanismusses die Visible-Eigenschaft einfach über DataBinding an Deine Berechtigungs-Listen-Instanz binden. [Datenbindungs-Links] http://groups.google.com/group/micro...a8424187d0d561 Allerdings müsste man sich Gedanken machen, ob sich dann nicht (etwa über Stackpanel) die Positionen der anderen Control ggf. verschieben müssen. > Schön wäre doch, wenn jedes Control irgendwo anfragen würde, ob der > aktuelle Benutzer es editieren, respektive ansehen darf. Bei Desktop-Anwendungen findet man dann häufig Windows-Authentication, also etwa: WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(identity); bool isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrato r); [WindowsPrincipal.IsInRole-Methode (WindowsBuiltInRole) (System.Security.Principal)] http://msdn.microsoft.com/de-de/library/46ks97y7.aspx oder andere Prinzipale/RoleManager ... da sind WPF und Windows Forms gleich. ciao Frank |
|
#5
|
|
|
|
|
Also direkt in WPF gibt es noch nichts, aber dein Workaround, das via Binding
zu lösen, ist auch nicht sehr abwägig. Besten Dank für deine Antwort. Michel |
|
#6
|
|
|
|
|
Hallo Michel,
Michel Erard schrieb: > Also direkt in WPF gibt es noch nichts, aber dein Workaround, > das via Binding zu lösen, ist auch nicht sehr abwägig. WPF ist für Oberfläche zuständig, dort sind Sicherheitsfeatures abseits der Codesicherheit, die .NET einbindet, nicht zu erwarten und IMHO auch fehl am Platze. Wie Frank auch schon andeutet: In WPF ist die Oberfläche über Styles und Trigger fast beliebig anpassbar. Und das muß ja nicht immer nur etwas Buntes sein. Das für WPF oft empfohlene M-V-VM Model eignet sich dabei gut, um Anpassung in jeder Richtung vorzunehmen. Einiges finest Du dazu bei Karl Shifflet (http://karlshifflett.wordpress.com/mvvm/) Bei der Implementierung der Sicherheit kann man sich an das ASP.NET Modell anlehnen, z. B.: <URL:http://msdn.microsoft.com/en-us/library/aa479032.aspx> Ob man dann auf das Active Directory oder eine anderweitige Speicherung setzt, hängt von den eigenen Zielsetzungen ab, kann so aber angepasst werden. Gruß Elmar |
|
|
| Ähnliche Themen | |
| Administrators Group User do not have permission! Hello: I have try to use a "USER_A" which is administrators group users. However, when I try to run "powercfg -h off" it show I do not have permission. May I know does... |
|
| Application Role oder user Hallo zusammen, ich habe eine für mich schon kompliziert aussehende Frage an euch. Worin ist der Unterschied zu sehen zwischen einem User und einer Application Role? Wir... |
|
| Role vorhanden; User mit gleichem Name bekommt direkt gleiche Privilegs Hallo Forum, (FireBird 1.5) Durch Zufall, ist mir gerade was aufgefallen. Es gibt eine Role mit Rechte auf div. Tabellen. Nun lege ich einen User mit dem gleichen Namen wie... |
|
| Diese Seite enthält sowohl sichere als auch nicht sichere Objekte Hallo! ICh erhalte immer bei einem Aufruf einer speziellen Seite die Fehlermeldung "Diese Seite enthält sowohl sichere als auch nicht sichere Objekte". Diese würde ich gern... |
|
|
Alle Zeitangaben in WEZ. Es ist jetzt 03:52 Uhr. | Privacy Policy
|