To zależy od wielkości i wymagań twojego projektu.
Widzę jeden sposób, w jaki dane o użytkownikach można podzielić na dwa zestawy o różnych celach, a tym samym wymaganiach:
- Dane tożsamości: nazwa użytkownika, skrót hasła, adres e-mail, czas ostatniego logowania itp.
- Dane profilu użytkownika, w tym preferencje użytkowników, ostatnia aktywność, aktualizacje statusu itp.
Należy pamiętać, że istnieją pewne atrybuty dotyczące użytkownika, które mogą należeć do dowolnej kategorii (np. Data urodzenia użytkownika). Różnica między tymi dwoma zestawami polega jednak na tym, że pierwszy jest ściśle kontrolowany i można go modyfikować tylko poprzez określone przepływy pracy. Na przykład zmiana hasła może wymagać podania istniejącego hasła, zmiana adresu e-mail może wymagać weryfikacji adresu e-mail i będzie to miało miejsce w przypadku, gdy użytkownik zapomni hasło.
Preferencje nie wymagają takich list ACL i mogą być teoretycznie modyfikowane przez użytkownika lub inną aplikację, o ile użytkownik wyrazi na to zgodę. Stawka jest niska, jeśli aplikacja złośliwie lub z powodu błędu uszkadza dane lub próbuje je zmodyfikować (zakładając, że zostaną podjęte inne środki bezpieczeństwa). Zazwyczaj byłoby to katastrofalne, gdyby nazwa użytkownika, hasło lub adres e-mail mogły zostać zmodyfikowane ponieważ można ich użyć do potwierdzenia tożsamości użytkownika lub odmowy usługi lub spowodowania kosztów wsparcia itp. dla administratora.
Dlatego zwykle dane są przechowywane w dwóch typach systemów:
- Dane identyfikacyjne zwykle trafiają do katalogu lub rozwiązania IAM.
- Dane preferencji znajdą się w bazie danych.
Powiedziawszy to, w praktyce ludzie będą naruszać te reguły i będą używać jednego lub drugiego (np. Serwer SQL za dostawcą członkostwa ASP.NET).
W miarę powiększania się danych tożsamości lub powiększania się organizacji, która je wykorzystuje, wkradają się różnego rodzaju problemy. Na przykład w przypadku katalogu podejmie próbę natychmiastowej replikacji zmian hasła na wszystkich serwerach w środowisku wieloserwerowym. Jednak preferencje użytkownika wymagają tylko ostatecznej spójności. (FYI: Oba są różnymi optymalizacjami twierdzenia CAPS.)
Wreszcie, katalogi (zwłaszcza katalogi online / w chmurze) będą również wydawać tokeny dostępu do innych zasobów przy użyciu protokołów takich jak OAUTH (np. Rozważ Facebook, Google, konto Microsoft, ADFS), podczas gdy baza danych nie ma takiej potrzeby. Baza danych będzie obsługiwać dość złożone sprzężenia i strukturę zapytań, których katalog nie potrzebuje.
Aby uzyskać więcej informacji, pomogłoby kilka wyszukiwań katalogu tożsamości vs bazy danych.
Ostatecznie sprowadza się to do tego, jakie są twoje scenariusze i jakie będą w przyszłości, w tym do integracji ze stronami trzecimi (i tego, z czego korzystają). Jeśli jest to dobrze zamknięty projekt i masz pewność, że możesz zabezpieczyć dane tożsamości użytkownika i poprawnie się uwierzytelnić, możesz wybrać bazę danych. W przeciwnym razie warto sprawdzić katalog tożsamości.
Jeśli wybierzesz DB, IMO, użycie jednego DB kontra dwa ostatecznie sprowadzi się do kontroli dostępu, zarówno dla użytkowników, jak i aplikacji.