Ändern JAAS Rollen basierend auf Softwarelizenz Flaggen
Frage
Ich habe eine ziemlich gewöhnliche Java-EE-Anwendung auf JBOSS Laufen bekommt. Es nutzt die JBoss DatabaseLoginModule JAAS-Authentifizierung. Es hat auch Anwendungsschicht Benutzer / Rollen in den Ruhezustand, die genau die gleichen sind.
Ich habe eine Idee (was meiner Meinung nach ziemlich nützlich ist für mich jedenfalls) eine Fähigkeit wenig habe ich in dem Software-Lizenzobjekt festlegen kann (nicht Hibernate), die alle Benutzer Benutzer der Nur-Lese-macht. Auf diese Weise können Sie mir eine von Relizenzierung es nur Version des Produkts lesen machen.
Was ich möchte, ist die Benutzerverbände tun Neuzuordnung auf der Grundlage einen boolean-Flag zugänglich im Programm.
Also normalerweise bekommen wir (viele-viele join)
Benutzer - * Userrole * -Role - * RoleActions
Dabei steht
user.roleid => role.id
Wenn die boolean gesetzt (eine Fähigkeit Bit in der Software-Lizenz festgelegt)
Ich möchte JAAS handeln, wie alle Benutzer 1 RoleID wurden =, wenn die Lizenz so sagt.
Irgendwelche Ideen?
Lösung
Mit dem DatabaseServerLoginModule Subklassen kann ich zusätzliche Prüfungen durchführen. (Auf der Software-Lizenz)
Trivial kann ich dann
-
Wenn die Lizenz abgelaufen ist, gibt ein Read-only Benutzer (die Anmeldeinformationen sind festgelegt)
-
Wenn die Lizenz für die Nur-Lese-Fähigkeit-Bit gesetzt hat, gibt die Read-only Benutzer (die Anmeldeinformationen sind festgelegt)
Da die Anmeldung abgefangen wurde, die Hibernate Benutzersuche für den richtigen Benutzer sein wird.
Andere Tipps
Vielleicht fehlt mir das Boot hier, aber warum nicht, dass programmatisch tun?
In User
Objekt bietet ein vorübergehend Getter wie getAuthenticatedRoles()
, die zusätzlich filtern würden, was geladen Hibernate
. Additonally, die ursprünglichen abgebildet Sammlung Getter protected
machen, und nur getAuthenticatedRoles()
von anderem Java-Code verwenden.