Dies hängt von der Größe und den Anforderungen Ihres Projekts ab.
Ich sehe eine Möglichkeit, wie Daten über Benutzer in zwei Gruppen mit unterschiedlichen Zwecken und Anforderungen aufgeteilt werden können:
- Identitätsdaten: Benutzername, Passwort-Hash, E-Mail-Adresse, letzte Anmeldezeit usw.
- Benutzerprofildaten, darunter Benutzervorgaben, neueste Aktivitäten, Statusaktualisierungen usw.
Beachten Sie, dass es einige Attribute zu dem Benutzer gibt, die in eine der beiden Kategorien fallen können (z. B. das Geburtsdatum des Benutzers). Der Unterschied zwischen diesen beiden Sätzen besteht jedoch darin, dass der erste streng kontrolliert wird und nur durch bestimmte Workflows geändert werden kann. Wenn Sie beispielsweise ein Kennwort ändern, müssen Sie möglicherweise ein vorhandenes Kennwort angeben. Wenn Sie die E-Mail ändern, müssen Sie möglicherweise die E-Mail-Adresse überprüfen. Diese Option wird verwendet, wenn der Benutzer das Kennwort vergisst.
Einstellungen erfordern keine solchen ACLs und können theoretisch vom Benutzer oder einer anderen Anwendung geändert werden, solange der Benutzer dem zustimmt. Der Einsatz ist gering, wenn eine Anwendung böswillig oder aufgrund eines Fehlers die Daten beschädigt oder versucht, sie zu ändern (vorausgesetzt, es werden andere Sicherheitsmaßnahmen ergriffen). Es wäre jedoch in der Regel katastrophal, wenn der Benutzername, das Kennwort oder die E-Mail-Adresse geändert werden könnten da sie entweder verwendet werden können, um die Identität des Benutzers anzunehmen oder den Dienst zu verweigern oder Supportkosten usw. für den Administrator zu verursachen.
Daher werden die Daten normalerweise in zwei Arten von Systemen gespeichert:
- Identitätsdaten werden normalerweise in einem Verzeichnis oder einer IAM-Lösung gespeichert.
- Die Präferenzdaten werden in einer Datenbank gespeichert.
In der Praxis verstoßen die Benutzer jedoch gegen diese Regeln und verwenden die eine oder andere (z. B. SQL Server hinter dem ASP.NET-Mitgliedschaftsanbieter).
Wenn die Identitätsdaten größer werden oder die Organisation, die sie verwendet, größer wird, treten verschiedene Arten von Problemen auf. Im Fall von Verzeichnissen wird beispielsweise versucht, die Kennwortänderungen sofort auf alle Server in einer Umgebung mit mehreren Servern zu replizieren. Benutzerpräferenzen erfordern jedoch nur eine eventuelle Konsistenz. (Zu Ihrer Information: Beide sind unterschiedliche Optimierungen des CAPS-Theorems.)
Schließlich stellen Verzeichnisse (insbesondere die Online- / Cloud-Verzeichnisse) auch Zugriffstoken für andere Ressourcen mithilfe von Protokollen wie OAUTH aus (z. B. Facebook, Google, Microsoft-Konto, ADFS), während eine Datenbank dies nicht benötigt. Eine Datenbank unterstützt sehr komplexe Verknüpfungen und Abfragestrukturen, die das Verzeichnis nicht benötigt.
Für weitere Details helfen ein paar Suchanfragen nach Identitätsverzeichnis und Datenbank.
Letztendlich kommt es darauf an, wie Ihre Szenarien aussehen und wie sie in Zukunft aussehen werden, einschließlich der Integration mit Drittanbietern (und was diese verwenden). Wenn es sich um ein in sich geschlossenes Projekt handelt und Sie sicher sind, dass Sie die Benutzeridentitätsdaten sichern und sich korrekt authentifizieren können, können Sie sich für eine Datenbank entscheiden. Andernfalls könnte es sich lohnen, ein Identitätsverzeichnis zu untersuchen.
Wenn Sie sich für DB, IMO, entscheiden, wird die Zugriffskontrolle für Benutzer und Anwendungen letztendlich durch die Verwendung von einer DB gegenüber zwei DBs eingeschränkt.