Beispiele für die Verwendung von Active Directory / LDAP-Gruppen für Berechtigungen \ Rollen in Rails App

8

Ich habe mich gefragt, wie andere Leute dieses Szenario implementiert haben. Ich habe eine interne Rails-App (Bestandsverwaltung, Etikettendruck, Versand usw.). Ich überschreibe Sicherheit auf dem System, weil der alte Weg mühsam zu verwalten war (Benutzertabelle, Passwörter, Rollen) - ich benutzte restful_authentication und roles. Es wurde vor etwa 3 Jahren eingeführt. Ich habe bereits AuthLogic mit ruby-ldap-net implementiert, um Benutzer zu authentifizieren (eigentlich war das überraschend einfach, verglichen mit dem, wie ich vorher mit anderen Frameworks / Sprachen gekämpft habe). Der nächste Schritt ist Rollen. Ich habe bereits Gruppen in Active Directory definiert - also möchte ich kein separates Rollensystem in meiner Rails-App ausführen, ich möchte nur Active Directory-Gruppen wiederverwenden - da dieser Teil des Systems bereits für andere Zwecke (gemeinsame Laufwerke) verwaltet wird , Backups, PC-Zugriff, usw.)

Ich habe mich also gefragt, ob andere Benutzer Erfahrung mit der Implementierung von Berechtigungen / Rollen in einer Rails-App hatten, basierend auf Gruppen in Active Directory oder LDAP. Auch die Rollenanforderungen sind ziemlich komplex .

Hier ist ein Beispiel:

Zum Beispiel habe ich Benutzer, die zu der Supervisor-Gruppe in AD und Inventory Dept gehören, also war ich dieser Benutzer in der Lage, "erweiterte" Aufgaben in Invetory auszuführen - anpassen, führen Sie Berichte, aber andere "Supervisor" aus andere Abteilungsmannen sollten dies nicht können, auch Top Management - sollte in der Lage sein, diese Berichte zu verwenden (unabhängig davon, ob sie dem Inventar angehören oder nicht), aber nicht das mittlere Management, es sei denn, sie befinden sich in der Inventargruppe. Administratoren des Systems (Domänen-Admins) sollten unbeschränkten Zugriff auf das System haben, mit Ausnahme von HR & amp; Finanzen Teil, es sei denn, sie sind in HR (wie Sie nicht wollen, dass alle Systemadministratoren (außer einem autorisierten) persönliche Informationen anderer Mitarbeiter sehen).

Ich schaute acl9, cancan, aegis. Ich habe mich gefragt, ob es irgendwelche Vorteile / Nachteile gibt, einen für den anderen zu verwenden, für diesen bestimmten Gebrauch des Systemzugriffs basierend auf AD. Schlage andere Systeme vor, wenn du gute Erfahrungen gemacht hast.

Danke !!!

    
konung 13.03.2010, 20:26
quelle

1 Antwort

6

ActiveLDAP ( Dokumentation , Github ) hat einige der Funktionen, nach denen Sie suchen, insbesondere:

  • Sie können LDAP-Objekte (Objektklasseninstanzen) Objekten in einer Rails-Anwendung zuordnen. Die API spiegelt ActiveRecord nicht genau wider, aber sie ist ziemlich einfach zu verstehen und zu lernen.
  • Es ist offensichtlich nicht möglich, usw. über LDAP und relationale Datenbanken beizutreten, aber Sie könnten einen leicht intelligenten Code schreiben, um zusammengesetzte Daten entweder vom ActiveLDAP-Objekt oder vom ActiveRecord-Objekt aus leicht zugänglich zu machen.
  • ActiveLDAP bietet auch Methoden zum Schreiben in LDAP, mit denen Sie Ihre Benutzer und Rollen in LDAP von Rails aus verwalten können. Dadurch entfällt die Notwendigkeit, eine Benutzertabelle in der Datenbank zu verwalten, jedoch wäre wahrscheinlich noch eine Benutzerdatenbanktabelle erforderlich anwendungsspezifische Daten über einen Benutzer.
  • Außerdem könnten Sie AuthLogic mit ActiveLDAP integrieren. Hier ist ein Versuch, den ich genau gefunden habe: LDAP Pass -durch Authentifizierung mit Authlogic und ActiveLdap
  • Sie könnten dann die Deklarative Autorisierung ( Pundit ) verwenden, um Ihre Rollen und Autorisierungen zu bearbeiten.
Patrick Klingemann 01.04.2010, 06:06
quelle