J'ai lu sur le contrôle d'accès basé sur le rôle et j'essaie de comprendre comment je devrais mettre en œuvre le contrôle de sécurité. Dans mon projet MEF, j'ai un contrôleur de sécurité qui est responsable de la validation de l'utilisateur, de la vérification des rôles, etc.Comment devrais-je concevoir un module de sécurité [contrôleur d'accès aux données] dans un projet MEF?
Naturellement, le contrôleur de sécurité doit pouvoir accéder à une base de données pour exécuter la validation sur un utilisateur et récupérer le (s) rôle (s) de l'utilisateur. J'ai l'intention d'implémenter des classes à partir de l'espace de noms System.Security.Principal.
Le module de contrôleur de sécurité doit-il avoir sa propre base de données dans laquelle les informations utilisateur sont conservées séparément des données métier?
Et, serait un fichier sérialisé binaire adéquat pour ce aussi longtemps que les mots de passe de l'utilisateur (uniquement le hachage) ne sont pas stockées dans ledit fichier?Je suppose cependant que pour que cela fonctionne, le fichier sérialisé doit être accessible par plusieurs instances de l'application ...
Mise à jour Depuis c'est un projet MEF, je me suis demandé sur la façon dont la sécurité devrait fonctionner. Voici mes pensées:
Security Controller est un objet Identity lui-même, par conséquent devrait probablement mettre en œuvre IIdentity
et avoir une propriété GenericIdentity
. SecControl
devrait aussi être le GenericPrincipal
... ??? SecControl serait également responsable de la modification des jeux d'autorisations AppDomain
. Je ne veux pas que des modules aient accès à des ressources (bases de données, fichiers, partages réseau, etc.) qui ne sont pas spécifiquement accordées par SecControl.
Non seulement les utilisateurs sont authentifiés, mais les modules le sont également. Les modules (plug-ins) implémenteront probablement IIdentity
et auront également des propriétés GenericIdentity
.
@dboarman: Je crois que la distinction porte davantage sur la question objective. Le vôtre semble bien adapté à une réponse définitive, non subjective et donc plus approprié pour SO. –