Це залежить від розміру та вимог вашого проекту.
Я бачу один спосіб, за яким дані про користувачів можна розділити на два набори з різною метою та, таким чином, вимогами:
- Дані про особу: ім’я користувача, хеш пароля, електронна адреса, час останнього входу тощо.
- Дані профілю користувача, які включають налаштування користувачів, останню активність, оновлення статусу тощо.
Зауважте, що щодо користувача є деякі атрибути, які можуть потрапляти в будь-яку категорію (наприклад, дата народження користувача). Відмінність цих двох наборів полягає в тому, що перший жорстко контролюється, і лише за допомогою певних робочих процесів його можна змінювати. Наприклад, зміна пароля може зажадати введення існуючого пароля, зміна електронної пошти може зажадати підтвердження електронної пошти, і воно буде використовуватися у випадку, якщо користувач забуде пароль.
Налаштування не вимагають таких ACL, і теоретично вони можуть бути змінені користувачем або іншим додатком до тих пір, поки користувач погодиться на нього. Заходи низькі, якщо програма зловмисно або через помилку пошкоджує дані або намагається їх змінити (припускаючи інші заходи безпеки.) Однак, це, як правило, катастрофічно, якщо будь-яке ім'я користувача, пароль або електронну пошту можна змінити оскільки вони можуть бути використані для присвоєння особі користувача або відмови в обслуговуванні, або викликають витрати на підтримку тощо.
Таким чином, зазвичай дані зберігаються в двох типах систем:
- Дані про особистість зазвичай містяться в каталозі або в рішенні IAM.
- Дані про налаштування опиняться в базі даних.
Сказавши, що на практиці люди будуть порушувати ці правила та використовувати ті чи інші (наприклад, SQL-сервер, що стоїть за провайдером членства в ASP.NET).
Коли дані про особистість стають більшими, або організація, яка їх використовує, збільшується, виникають різні типи проблем. Наприклад, у випадку каталогу він спробує негайно повторити зміни пароля на всіх серверах у середовищі з декількома серверами. Однак переваги користувачів вимагають лише можливої послідовності. (FYI: Обидва це різні оптимізації теореми CAPS.)
Нарешті, каталоги (наприклад, онлайн / хмарні каталоги) також видаватимуть маркери доступу для інших ресурсів за допомогою таких протоколів, як OAUTH (наприклад, Facebook, Google, обліковий запис Microsoft, ADFS), тоді як база даних не потребує такої потреби. База даних підтримуватиме досить складну структуру приєднань та запитів, якій каталог не потрібен.
Для отримання більш детальної інформації допоможе кілька пошуків у каталозі ідентифікаційних даних проти бази даних.
Врешті-решт, це зводиться до того, якими є ваші сценарії та очікуються у майбутньому, включаючи інтеграцію з будь-якими третіми сторонами (і що вони використовують). Якщо це добре вміщений проект, і ви впевнені, що можете захистити дані ідентифікації користувача та правильно засвідчити автентифікацію, тоді ви можете перейти до бази даних. В іншому випадку, можливо, варто вивчити каталог посвідчень.
Якщо ви перейдете до DB, IMO, використання однієї БД проти двох з часом призведе до контролю доступу, як для користувачів, так і для додатків.