Je mets en place un nouveau service Web RESTful et je dois fournir un modèle de contrôle d'accès basé sur les rôles . J'ai besoin de créer une architecture qui permettra aux utilisateurs de fournir leur nom d'utilisateur et leur mot de passe pour accéder aux services, puis de restreindre la façon dont ils peuvent utiliser les services (quels services ils peuvent utiliser, lire vs lire / écrire, etc.) en fonction des rôles attribué à ces utilisateurs.
J'ai regardé autour d'autres questions et trouvé des morceaux de ce que je veux. Par exemple, il existe plusieurs discussions intéressantes sur la façon de gérer les informations d'identification transmises aux services REST, l' authentification reposante , les meilleures pratiques . Il existe également d'excellents conseils sur ce que les programmeurs doivent savoir lors de la création de sites Web ( ce que chaque développeur doit savoir avant de créer un site Web public ).
Mais je n'ai pas été en mesure de trouver un bon poste, article, livre sur les meilleures pratiques et les modèles pour l'architecture logicielle qui implémente ces solutions.
Plus précisément:
- Comment les informations utilisateur et les droits d'accès doivent-ils être stockés? (modèle de données, emplacement, format)
- Quels sont les bons modèles de conception pour les représenter et les suivre sur le serveur? (sessions en mémoire, recherches db à chaque fois, etc.)
- Quels sont les bons modèles pour mapper ces droits aux services de manière sécurisée dans la base de code?
- Quels choix architecturaux peuvent aider à maintenir le système plus sûr et fiable?
- Quelles leçons les gens tirent-ils des tranchées?
Je recherche des modèles de conception et des recommandations pour l'architecture logicielle en dehors de toute technologie spécifique.
(Si les technologies importent, je prévois de l'implémenter en utilisant python, twisted et une base de données postgresql)
Réponses:
OpenAM.
http://forgerock.com/openam.html
Identity Manager. Séparé de tout serveur Web. Basé sur LDAP.
Résolu par votre cadre. Ne pense plus. Utilisez simplement les bons modèles de conception déjà construits de votre framework.
Résolu par votre cadre. Chaque cadre utilise une approche légèrement différente. Chaque langue a des fonctionnalités légèrement différentes. Django, par exemple, utilise fortement les décorateurs de Python pour cela.
Plus? Plus que quoi?
la source