Je suis en train de concevoir une application Web RESTful qui fournira un système d'authentification pour plusieurs autres applications. Les autres applications interrogeront cette application via HTTP et récupèreront le XML décrivant les utilisateurs authentifiés.Critique mon schéma de système d'authentification DB?
L'application d'authentification doit garder une trace des que les utilisateurs sont autorisés à faire ce que sur les applications.
Je travaille sur le schéma DB. Voici ma conception initiale. (Supposons que chaque table a une colonne id
.)
applications # The various client apps that will query this auth system.
------------
name
users # Table simplified for discussion
-----
username
password
email
roles
-----
name
application_id
roles_users
-----------
role_id
user_id
L'idée est de dire que quelqu'un a essayé d'exécuter une fonction administrative dans l'application du « Matériel d'inventaire ». Donc, "Inventaire de l'équipement" dirait au système d'authentification "obtenir l'utilisateur avec le nom d'utilisateur xxx et le mot de passe yyy." Ensuite, il regarde l'objet retourné (via ActiveResource) User
et vérifie si son roles
Array contient un Role
avec un nom de "ADMIN" qui lui-même appartient à un objet Application
avec un nom de "Inventaire d'équipement".
Ou peut-être il serait préférable d'éliminer la table applications
et ont beaucoup plus de rôles, par exemple, « equipment_inventory_admin
», « equipment_inventory_readonly
», « job_tracker_admin
», etc.
Ce qui est plus important, normalisant l'entité d'application ou simplifier la structure de la table? Peut-être après tout ce tapage je viens de répondre à ma propre question, mais les commentaires ou les suggestions seraient les bienvenus.
Je ne fusionnerais pas les tables, c'est une relation many-to-many. –