Wir entwickeln eine App (mit Grails Spring Security (ehemals Acegi)), in der wir Tausende von Benutzern haben werden, die 10-15 diskrete Benutzertypen umfassen. Im aktuellen System entspricht jeder Benutzertyp einer "Gruppe", und die spezifischen Rollen und Berechtigungen sind an die Gruppe gebunden. Der Benutzer erhält alle seine "Rollen" aus der Gruppe.Spring Security (Acegi) und Benutzergruppen (vs. Rollen)
Zum Beispiel könnten wir zwei Benutzergruppen haben:
CLOWN: Rollen = ride_clown_car, toot_horn, receive_applause ACROBAT: Rollen = do_flip, walk_tightrope, receive_applause
Wir haben drei Benutzer, eine an die zugewiesene CLOWN-Gruppe, eine der ACROBAT-Gruppe zugewiesene Gruppe und eine, die beiden zugewiesen ist (hat eine Union von CLOWN- und ACROBAT-Rollen).
Wenn wir Berechtigungen ändern, tun wir dies auf Gruppenebene. Wenn wir beispielsweise der ACROBAT-Gruppe eine swing_on_trapeze-Berechtigung hinzufügen, übernehmen alle Akrobaten diese automatisch.
In Grails Begriffe, die Berechtigungen auf den Controllern würden immer noch auf der Rollenebene sein. Eine Aktion mit @Secured (['toot_horn']) würde also Benutzern in der CLOWN-Gruppe, aber nicht in der ACROBAT-Gruppe erlauben. @Secured (['receive_applause']) würde sowohl CLOWNS als auch ACROBATS zulassen.
Wie würde ich dies in Spring Security angesichts der zweistufigen Art des Modells (Benutzer, Rolle) tun? Muss ich meine eigene benutzerdefinierte Authentifizierung implementieren, um rollenbasierte Gruppen zu sammeln?
Danke!
ich etwas bin die Umsetzung sehr ähnlich zu dir. Wie stellst du "grails.plugin.springsecurity.userLookup.authorityJoinClassName" in deinem Fall ein? In einem zweistufigen System könnte dies nur auf die erste Ebene (Benutzergruppe) zeigen, die die tatsächlichen Rollen/Berechtigungen nicht definiert. – sola