Softwarearchitektur zur Authentifizierung / Zugriffskontrolle des REST-Webdienstes

12

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.)

Allen
quelle
Klingt wie Sie brauchen nur jemanden, um es für Sie zu schreiben;)
Martin Blore
Leider sieht es so aus. Es schien nur seltsam, dass dieser Teil des Stapels nirgendwo beschrieben wurde. Selbst wenn ich eine Beschreibung finden könnte, wie eine Site wie newegg, digg oder sogar stackoverflow Benutzeranmeldeinformationen und -zugriff im Backend handhabt, würde das helfen.
Allen
Haben Sie dabei Fortschritte gemacht?
Bryan Agee
Hast du an oAuth2 gedacht ? Es gibt dafür Server- und Client-Bibliotheken in vielen gängigen Sprachen, die die Implementierung erleichtern sollen.
Sam

Antworten:

5

OpenAM.

http://forgerock.com/openam.html

Wie sollen Benutzerdaten und Zugriffsrechte gespeichert werden? (Datenmodell, Ort, Format)

Identity Manager. Trennen Sie sich von jedem Webserver. LDAP-basiert.

Was sind gute Entwurfsmuster für die Darstellung und Verfolgung dieser auf dem Server? (Sitzungen im Speicher, jedes Mal Datenbank-Lookups usw.)

Gelöst von Ihrem Framework. Denk nicht mehr nach. Verwenden Sie einfach die bereits erstellten guten Entwurfsmuster Ihres Frameworks.

Was sind gute Muster für die sichere Zuordnung dieser Rechte zu den Diensten in der Codebasis?

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.

Welche architektonischen Entscheidungen können dazu beitragen, das System sicherer und zuverlässiger zu machen?

Mehr? Mehr als was?

S.Lott
quelle
In meinem spezifischen Setup glaube ich nicht, dass ich so etwas wie OpenAM verwenden kann. Ich benötige kein unternehmensweites Single Sign-On. Ich glaube, ich brauche etwas Kleineres und Eigenständigeres.
Allen
@Allen. Wir verwenden es nicht für unternehmensweites Single Sign-On. Wir verwenden es für ein einfaches Identitätsmanagement.
S.Lott