Lösungsvorschläge für Multi-User

MIVA

Mitglied
Ich bin gerade am überlegen, wie man folgendes Szenario am besten umsetzt:

In einem Programm kann ein registrierter User selbstständig mehrere User erstellen. Jeder dieser erstellten User kann, vorausgesetzt er hat die Rechte dafür, selber User anlegen. Es gibt aber mehrere User-Gruppen. Nennen wir diese Gruppen der einfachheit halber A, B und C.

- Beim anlegen eines neuen Benutzers (müsste) ist es, wenn Gruppe A sie erstellt, B und C egal sein.
- Beim aktualisieren, ermitteln und löschen darf nur Gruppe A, B und C aus ihrer Gruppe die jeweilige Aktion auf deren User ausführen.

Um es an einem praktischen Beispiel zu erläutern. Bei Trello (einer Web-Applikation für Kanban-Boards) kann sich ein User registrieren und dann andere Benutzer erstellen. Aber der User Müller kann nur für seinen Bereich Kanbans erstellen, abfragen, ändern. Ein weiterer User Meyer kann sich registrieren und für sich selbst bzw. seinem Team einen völlig unabhängig Bereich erstellen. Hierbei hat natürlich User Meyer keinen Einfluss auf den Arbeitsbereich von User Müller.

Wie könnte man soetwas am besten Umsetzen?

Meine Überlegungen gehen zur Zeit dahin, den Datensätzen eine Spalte zu geben mit einer eindeutigen Salt für die Gruppe. Aber vielleicht gibt es ja noch bessere Ansätze?
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Also aus meiner Sicht müsste man hier erst einmal genau definieren, wie die Usecases aussehen und dann auch, wie man hier dann die Daten sauber hält.

Und dann könnte es sein, dass es generell User gibt. Dass sind dann halt Personen, die sich anmelden können.
Dann gibt es sowas wie Arbeitsbereiche. Ein User kann Zugriff auf Arbeitsbereiche haben und - so seine Zugriffsrechte dies erlauben, auf Rechte vergeben, User einladen, u.s.w.
Ggf. kann man dann auch Regeln erfassen. Wo und wie ist dabei erst einmal egal.

Nehmen wir also mal so eine Anwendung, wie Du diese skizziert hast.

Dann will vielleicht eine Firma sich anmelden: Alle Emails der Domain kneitzel.de werden von mir verwaltet. Alle User können sich über mein Identity Server anmelden. Ich möchte also als Admin von kneitzel.de meinen Anmeldeserver hinterlegen können.
Dann soll es einen Bereich geben nur von mir. Wenn ein neuer Mitarbeiter kommt, dann richte ich diesen in meinem System ein. Und dnan kann er sich mit seiner Email-Adresse neuer.user@kneitzel.de dort melden. Durch diese Email-Adresse weiss Dein Server: server oauth2.kneitzel.de ist zur Anmeldung relevant und leitet auf meine Anmeldeseite weiter, der User meldet sich an und du bekommst dann den bestätigten Token.
Da er @kneitzel.de war, ist er in dem Arbeitsbereich von meiner Firma und kann da alle Kanban Boards sehen, die "intern" markiert sind.
Er kann neue Boards erstellen, die dann "intern" sind. Da er Owner des neuen Boards ist, kann er die Zugriffsrechte aber auch verändern:
- Er kann weitere Personen einladen per Email
- Er kann evtl. umsetzen auf "public" oder "private"
- ...

Evtl. wird er aber auch einem anderen Bereich zugeordnet. Er arbeitet jetzt für einen Kunden: kunden.de. Der Kunde hat ihm also eine Einladung zu einem Arbeitsbereich oder einem Kanban Board gesendet und diese hat er angenommen mit seiner @kneitzel.de Anmeldung.... Damit hat er da auch gewisse Rechte und so ...

Daher hat man dann evtl. eine Struktur a.la:
- Es gibt User - das sind einfache Entities, die eine oder mehrere Anmeldemethode hinterlegt haben.
- Es gibt Anmelde-Methoden: Er kann sich ggf. per Passwort anmelden, oder über einen OAuth Server einer Firma, per Google, Microsoft, Github, Facebook, .... Es gibt so viele Anbieter, die eine Anmeldung unterstützen. So kann ein User hier hinterlegt haben: kneitzel.de Anmeldemethode und Token der Anmeldung ist xyz
- Es gibt Arbeitsbereiche.
- Es gibt Kanban Boards, jedes Board bekommt einen Arbeitsbereich.
- Es gibt eine Zuordnung User <-> Arbeitsbereich incl. Rechten. Ein User kann einem Arbeitsbereich zugeordnet sein mit Rechten, einer Rolle oder sowas ... (Ich bin bei dem kneitzel.de Arbeitsbereich der Owner oder Admin. Der neue User wäre nur "User". (Evtl. gibt es auch Gruppen, die zu der Rolle gehören. Wenn mein Identity-Server auch Gruppen liefert, dann ist er evtl. in der Rolle "Trello-Admins" und dann soll er in dem Bereich auch Admin sein. Und wenn ich die Rolle bei mir weg nehme, sollte er die auch direkt verlieren!)
- So eine Zuordnung gibt es auch bei den einzelnen Boards.
....

Das kann man sich also in Ruhe überlegen.
Wichtig ist: Man muss erst einmal überlegen, was man überhaupt unterstützen will oder kann. Soll eine Firma eigene Identity-Systeme einbringen können? Sollen Nutzer mit bestimmten Emails direkt einem Bereich zugeordnet werden? Ich habe da jetzt einfach mal recht viel zusammen gesponnen um nur einmal aufzuzeigen, was denn so alles gehen könnte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Verknüpfung auflösen für Frontend Datenbankprogrammierung 7
R Beste Lösung für User Erstellung in mongodb Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
Zrebna Empfehlung für ein kostenloses DB-Hosting gesucht Datenbankprogrammierung 6
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
Kirby.exe Denkanstoß für Ranking Datenbankprogrammierung 1
L Oracle Repräsentative Namen für die Column Types Datenbankprogrammierung 9
OnDemand Struktur für Parent / Child Produkt Datenbankprogrammierung 5
N ORM für Sqlite Datenbankprogrammierung 4
I Konzept: Klasse / Entity für Einstellung der Software Datenbankprogrammierung 3
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
ruutaiokwu MySQL MariaDB-Client-Zertifkate, nur für einen bestimmten User Datenbankprogrammierung 5
B Datenmodell für Regeln + Bedingungen & Referenz auf andere Tabelle Datenbankprogrammierung 12
O Dokumentation für MariaDB 10.3. Datenbankprogrammierung 2
F MariaDatabase Einstellungen für Verbindungen Datenbankprogrammierung 5
Dimax MySQL Trigger für eine Spalte Datenbankprogrammierung 5
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
B Brauche Tipps für Datenbankdesign Datenbankprogrammierung 8
B Tabelle für "wiederkehrende Rechnungen" Datenbankprogrammierung 12
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
J Warum sind Sockets für einen Live-Chat sinnvoll? Datenbankprogrammierung 8
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
X PostgreSQL Datenbankdesign für Vokabeltrainer Datenbankprogrammierung 48
@SupressWarnings() HSQLDB Datenbank für mein Dorfbauspiel "Time of Kings" Datenbankprogrammierung 6
M Idee Umsetzung //NFC Eintrittskarten für Geburtstag Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
P Datanbank für Java-Programmierung Datenbankprogrammierung 10
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
J SQLite Ich muss für mein Projekt meine Datenbank Kapseln Datenbankprogrammierung 2
J Tipps für ERM Datenbankprogrammierung 4
P Highlevel-Lösung für Speicherung von Baumstruktur mit unbekannter Tiefe Datenbankprogrammierung 1
F welche Datenbank für Messwerte? Datenbankprogrammierung 4
E Warum werden für Datenbanktabellen Schemanamen festgelegt? Datenbankprogrammierung 1
M DB Schema für Vokabeltrainer Datenbankprogrammierung 2
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
T NoSQL Connection für die Thesis [GWT] Datenbankprogrammierung 1
J SQLite Abfrage ausführen stoppt für Zyklus? Wie es zu lösen? Datenbankprogrammierung 3
S HSQLDB Fehlermeldung für den Bildschirm Datenbankprogrammierung 3
L Datenmodell erstellen für eine Nutzertanalyse Datenbankprogrammierung 1
I Query für Geburtstage Datenbankprogrammierung 6
L Zentrale Datenbank im Internet für Spiele Highscores? Datenbankprogrammierung 1
P Derby/JavaDB Csv Datei für dieses Musterprogramm Datenbankprogrammierung 12
ruutaiokwu code-formatter für t-sql... Datenbankprogrammierung 12
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
T Mehrsprachigkeit für Tabellenfelder Datenbankprogrammierung 6
E MySQL Große Datenmengen reibungslos speichern für Gameserver Datenbankprogrammierung 6
F MSSql oder MongoDB für die Speicherung von POI Datenbankprogrammierung 9
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
P MySQL Historie für ein Objekt anlegen Datenbankprogrammierung 5
P MySQL eine richtige Datenbank für einen routenplaner erstellen Datenbankprogrammierung 2
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J Datenbank für Fragen/ Antworten Datenbankprogrammierung 7
O Datenbankschnittstelle für Java Datenbankprogrammierung 8
L Datenbank für kleinere Anwendungen Datenbankprogrammierung 3
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
S ich brauche tipps für JDBC Datenbankprogrammierung 4
I Hibernate - Best Practice für Lazy Loading Datenbankprogrammierung 3
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
GianaSisters SQL Befehl für allgemeine Datenbankexistenz Datenbankprogrammierung 4
B Beispiel für sicheres DBUsername/DBPassword handling Datenbankprogrammierung 4
I Anfänger-Tutorial für Hibernate gesucht Datenbankprogrammierung 3
heart_disease Beratung für Datenbankdesign Datenbankprogrammierung 13
C Embedded DB für Java Datenbankprogrammierung 26
J Unterstützung für verschiedene Datenbanken Datenbankprogrammierung 2
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
F suche Erstanschub für DB-Zugriff Datenbankprogrammierung 9
F MySQL SQL Abfrage für u.a. Spaltenname key Datenbankprogrammierung 4
T ResultSet befehl für leere Spalte nicht lesen Datenbankprogrammierung 4
F Performance-Tool für Oracle Datenbankprogrammierung 2
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
C Split String für SQl query Datenbankprogrammierung 10
A update methode für datenbank Datenbankprogrammierung 2
N Datenbank für Dateien Datenbankprogrammierung 6
N Datenbank für einen Stundenplan Datenbankprogrammierung 4
G welche Datenbanktabellen für folgende Attribute Datenbankprogrammierung 3
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
S JPA (EntityManager für jeden Nutzer?) Datenbankprogrammierung 8
J Buffer Manager für Datenbank Datenbankprogrammierung 4
F SQL Voraussetzung für JDBC? Datenbankprogrammierung 10
R Bei Webformular DropDown Felder JA, NEIN! Was für einen Datentyp verwenden? Datenbankprogrammierung 7
T SSL Zertifikat für mysql datenbankzugriff Datenbankprogrammierung 6
T Debugger für SQL? Datenbankprogrammierung 5
Chtonian Effizientes Query System für Wortnachschlagewerk Datenbankprogrammierung 9
G Tabelle für Zeitraum sperren Datenbankprogrammierung 4
A Struct für Datenbank abfrage? Datenbankprogrammierung 12
O Hibernate für Eclipse Datenbankprogrammierung 5
T JPQL Query für eine Tabellenansicht Datenbankprogrammierung 2
D Sicherheit für Datenbankverbindung Datenbankprogrammierung 19
S Standard für Datenbanken Datenbankprogrammierung 3
R Entfernte MySQL Datenbank für lokale Swing-App Datenbankprogrammierung 8
Landei Mehre Werte für einen Prepared-Statement_Parameter übergeben? Datenbankprogrammierung 3
G Einheitliches Casting für Decimal und Integer-Werte Datenbankprogrammierung 5
G TippSpiel für Bundesliga programieren Datenbankprogrammierung 4
-horn- [Anfänger] Ein einfaches Beispiel für Abfrage von MxSQL? Datenbankprogrammierung 8
G persistence.xml für MySQL - Verbindung Datenbankprogrammierung 6
M Persistenz für kleines Projekt Datenbankprogrammierung 11

Ähnliche Java Themen


Oben