Ich richte einen neuen RESTful-Webdienst ein und muss ein rollenbasiertes Zugriffssteuerungsmodell bereitstellen . Ich muss eine Architektur erstellen, mit der Benutzer ihren Benutzernamen und ihr Kennwort eingeben können, um Zugriff auf die Dienste zu erhalten, und dann basierend auf den Rollen einschränken können, wie sie die Dienste verwenden können (welche Dienste sie verwenden können, Lesen oder Lesen / Schreiben usw.) diesen Benutzern zugewiesen.
Ich habe mich bei anderen Fragen umgesehen und Stücke gefunden, von denen ich will. Zum Beispiel gibt es einige gute Diskussionen darüber, wie die Übergabe von Anmeldeinformationen an REST-Services behandelt werden soll. Best Practices für die Restful-Authentifizierung . Es gibt auch einige wichtige Hinweise, was Programmierer beim Erstellen von Websites wissen sollten ( was jeder Entwickler wissen sollte, bevor er eine öffentliche Website erstellt ).
Es ist mir jedoch nicht gelungen, eine gute Veröffentlichung, einen Artikel und ein Buch mit Best Practices und Mustern für die Softwarearchitektur zu finden, die diese Lösungen implementiert.
Speziell:
- Wie sollen Benutzerdaten und Zugriffsrechte gespeichert werden? (Datenmodell, Ort, Format)
- Was sind gute Entwurfsmuster für die Darstellung und Verfolgung dieser auf dem Server? (Sitzungen im Speicher, jedes Mal Datenbank-Lookups usw.)
- Was sind gute Muster für die sichere Zuordnung dieser Rechte zu den Diensten in der Codebasis?
- Welche architektonischen Entscheidungen können dazu beitragen, das System sicherer und zuverlässiger zu machen?
- Welche Lehren ziehen die Menschen aus den Gräben?
Ich suche nach Entwurfsmustern und Empfehlungen für die Softwarearchitektur außerhalb bestimmter Technologien.
(Wenn die Technologien von Bedeutung sind, plane ich, dies mithilfe von Python, Twisted und einer Postgresql-Datenbank zu implementieren.)
Antworten:
OpenAM.
http://forgerock.com/openam.html
Identity Manager. Trennen Sie sich von jedem Webserver. LDAP-basiert.
Gelöst von Ihrem Framework. Denk nicht mehr nach. Verwenden Sie einfach die bereits erstellten guten Entwurfsmuster Ihres Frameworks.
Gelöst von Ihrem Framework. Jedes Framework verwendet einen etwas anderen Ansatz. Jede Sprache hat leicht unterschiedliche Merkmale. Django zum Beispiel setzt dafür Pythons Dekorateure stark ein.
Mehr? Mehr als was?
quelle