Hi Forum,
ich würde gerne abhängig vom Windows-Benutzername Teile (Plugins) meiner Software (C#, WPF) zur Nutzung freischalten bzw. sperren/ausblenden.
Die Rechte können sich mit der Zeit ändern und somit sollte das Ganze schnell und einfach wartbar sein.
Hier ein Beispiel der Rechtevergabe (X ^= Zugriffsberechtigung für das jeweilige Plugin)
+-----------+-------------+----------+----------+
| Benutzer | Plugin 1 | Plugin 2 | Plugin 3 |
+-----------------------------------------------+
| B1 | X | | X |
| B2 | | | X |
| B3 | | X | X |
| B4 | | X | X |
+-----------+-------------+----------+----------+
Was ist hier Stand der Technik und welche Vorgehensweise würdet ihr empfehlen?
Ich bedanke mich schon jetzt und wünsche ein schönes Wochenende
Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt - Tractatus 5.6, Ludwig Wittgenstein
Rollenbasiert über das Windows Rollenmanagement. Dafür ist es gedacht und wird von .NET auch von Haus aus unterstützt.
Management dann ebenfalls über D(eine/ extra) Anwendung oder über das Active Directory User and Group Management.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Nein, ich meine den System.DirectoryServices.AccountManagement Namespace.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Was ist hier Stand der Technik und welche Vorgehensweise würdet ihr empfehlen?
Wenn du schon mit Windows Account arbeitest, dann bietet sich SSO an, die Rechtevergabe würde ich jedoch über AD-Gruppen und nicht AD-User realisieren, somit ist die Flexibilität größer.
**:::
Vielen Dank euch allen! Wer ähnliches geplant hat, findet Everything in Active Directory via C#.Net 3.5 (Using System.DirectoryServices.AccountManagement) einen guten Einstieg.
Eine Frage habe ich noch:
Wenn der PC mal nicht an der Domäne ist, quasi keine Verbindung zu AD hat, wie würdet ihr das dann am besten handeln? Die Gruppenzugehörigkeit lokal abspeichern (AppData) und immer dann Updaten, wenn sich der PC wieder an der Domäne anmeldet? Oder speichert Windows selbst die Daten lokal schon irgendwo ab?
Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt - Tractatus 5.6, Ludwig Wittgenstein
Wie Frage an der Stelle wäre: warum hat der PC keine Verbindung zur Domäne? Was ist da die Situation oder der Usecase?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Bsp: Benutzer sitzt im Zug / ist unterwegs und hat keine Verbindung zur Domäne.
Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt - Tractatus 5.6, Ludwig Wittgenstein
Dann reden wir also von einem Laptop statt PC.
Sofern Du nur das Princpal des aktuellen Benutzers brauchst, dann cached das Windows bereits automatisch in der Session des aktuellen Benutzers.
Windows verhält sich so, dass diese nur beim Login abgefragt werden. Sprich, beim Hinzufügen eines Benutzers in eine Gruppe muss derjenige sich auch erneut an Windows anmelden (alternativ, wer die Rechte hat whoami /groups
).
Brauchst Du eigene Abfragen gegen das Active Directory, zum Beispiel gegen Gruppen oder andere Benutzer, dann musst Du Dir pro Anwendungsfall eine eigene Möglichkeit suchen (zB. Cache mit Sync).
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code