Cela dépend de la taille et des exigences de votre projet.
Je peux voir une façon dont les données sur les utilisateurs peuvent être divisées en deux ensembles, avec des objectifs différents et donc des exigences:
- Données d'identité: nom d'utilisateur, hachage du mot de passe, adresse e-mail, dernière heure de connexion, etc.
- Données de profil utilisateur, qui incluent les préférences des utilisateurs, la dernière activité, les mises à jour de statut, etc.
Notez qu'il existe certains attributs concernant l'utilisateur qui peuvent appartenir à l'une ou l'autre catégorie (par exemple la date de naissance de l'utilisateur). La différence entre ces deux ensembles est cependant que le premier est étroitement contrôlé et que ce n'est qu'à travers certains workflows qu'il peut être modifié. Par exemple, la modification d'un mot de passe peut nécessiter la fourniture d'un mot de passe existant, la modification de l'e-mail peut nécessiter une vérification de l'e-mail, et il serait utilisé dans le cas où l'utilisateur oublie le mot de passe.
Les préférences ne nécessitent pas de telles ACL et pourraient théoriquement être modifiées par l'utilisateur ou une autre application tant que l'utilisateur y consent. Les enjeux sont faibles si une application malveillante ou due à un bogue corrompt les données ou tente de les modifier (en supposant que d'autres mesures de sécurité soient prises.) Cependant, il serait généralement désastreux si l'un des nom d'utilisateur, mot de passe ou e-mail pouvait être modifié. car ils peuvent être utilisés pour assumer l'identité de l'utilisateur ou refuser le service ou entraîner des frais de support, etc. pour l'administrateur.
Ainsi, les données sont généralement stockées dans deux types de systèmes:
- Les données d'identité iront généralement dans un répertoire ou une solution IAM.
- Les données de préférence se retrouveront dans une base de données.
Cela dit, dans la pratique, les gens enfreindront ces règles et utiliseront l'un ou l'autre (par exemple, le serveur SQL derrière le fournisseur d'adhésion ASP.NET).
À mesure que les données d'identité deviennent plus grandes ou que l'organisation qui les utilise augmente, différents types de problèmes se glissent. Par exemple, dans le cas d'un répertoire, il tentera de répliquer les modifications de mot de passe immédiatement sur tous les serveurs dans un environnement multiserveur. Cependant, la préférence de l'utilisateur ne nécessite qu'une cohérence éventuelle. (Pour info: les deux sont des optimisations différentes du théorème CAPS.)
Enfin, les répertoires (en particulier les répertoires en ligne / cloud) émettront également des jetons d'accès pour d'autres ressources en utilisant des protocoles tels que OAUTH (par exemple, pensez à Facebook, Google, Microsoft Account, ADFS), tandis qu'une base de données n'a pas un tel besoin. Une base de données prendra en charge des jointures et une structure de requête assez complexes, dont le répertoire n'a pas besoin.
Pour plus de détails, quelques recherches sur le répertoire d'identité par rapport à la base de données seraient utiles.
Il se résume finalement à ce que vos scénarios sont et devraient être à l'avenir, y compris l'intégration avec des tiers (et ce qu'ils utilisent). Si c'est un projet bien contenu et que vous êtes sûr que vous pouvez sécuriser les données d'identité de l'utilisateur et vous authentifier correctement, vous pouvez opter pour la base de données. Sinon, il pourrait être utile d'étudier un répertoire d'identité.
Si vous optez pour la DB, IMO, l'utilisation d'une DB contre deux reviendrait finalement au contrôle d'accès, à la fois pour les utilisateurs et les applications.