hilpers


  hilpers > microsoft.* > microsoft.german.entwickler.dotnet.csharp

 #1  
30.12.2008, 11:20
Boskop
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  
30.12.2008, 13:08
Frank Dzaebel
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  
30.12.2008, 13:32
Michel Erard
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  
30.12.2008, 20:01
Frank Dzaebel
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  
31.12.2008, 07:21
Michel Erard
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  
31.12.2008, 07:58
Elmar Boye
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