Ich schreibe einen JACC
Anbieter.
Auf dem Weg bedeutet dies die Implementierung eines PolicyConfiguration
.
Der PolicyConfiguration
ist dafür verantwortlich, Konfigurationsinformationen vom Anwendungsserver zu akzeptieren, z. B. welche Berechtigungen für welche Rollen gelten. Auf diese Weise kann ein Policy
späterer Autorisierungsentscheidungen treffen, wenn er Informationen über den aktuellen Benutzer und dessen Versuche erhält.
Es ist jedoch nicht Teil des PolicyConfiguration
(grausamen) Vertrags des Vertrags, eine Zuordnung zwischen Rollen und ihren Berechtigungen aufrechtzuerhalten Principals
, die diesen Rollen zugewiesen sind.
Normalerweise - immer wirklich - beherbergt ein Anwendungsserver diese Zuordnung. Zum Beispiel auf Glassfish, beeinflussen Sie diese Zuordnung durch Dinge wie Versorgung sun-web.xml
und sun-ejb-jar.xml
und so weiter mit Java EE - Module. (Diese herstellerspezifischen Dateien sind dafür verantwortlich zu sagen, dass es sich beispielsweise superusers
um eine Gruppe handelt, der die Anwendungsrolle zugewiesen werden soll admins
.)
Ich möchte die Funktionalität dieser Dateien wiederverwenden und dies für ein möglichst breites Spektrum von Anwendungsservern tun.
Hier ist - völlig willkürlich - die Einstellung von IBM zu dieser Angelegenheit, was meinen Verdacht zu bestätigen scheint, dass das, was ich tun möchte, im Wesentlichen unmöglich ist . (Mehr Munition für meinen Fall, dass dieser spezielle Java EE-Vertrag das Papier, auf dem er gedruckt ist, nicht wert ist.)
Meine Frage: Wie komme ich zu diesen Informationen zur Zuordnung von Prinzip zu Rolle in - für den Anfang - Glassfish und JBoss aus einem heraus PolicyConfiguration
? Wenn es einen Standardweg gibt, den ich nicht kenne, bin ich ganz Ohr.
quelle
Because JSR-115 does not define how to address role mapping, WebLogic JACC classes are used for role-to-principal mapping.
Siehe docs.oracle.com/cd/E24329_01/web.1211/e24485/…Antworten:
Die kurze Antwort lautet: Es gibt keinen Standardweg.
Obwohl Glassfish und JBoss Principal-to-Role-Zuordnungen unterstützen, übernimmt JACC nicht alle Container und delegiert daher die Verantwortung für die Beibehaltung dieser Zuordnungen an die Implementierung des JACC-Anbieters. Aus den Dokumenten (siehe:
PolicyConfiguration.addToRole
Methode ):Mit anderen Worten, Sie müssen dies für jeden Container selbst in Ihrem JACC-Anbieter implementieren. Für JBoss können Sie beispielsweise eine der Unterklassen von verwenden
AbstractRolesMappingProvider
.quelle
PolicyContextHandler
z. B. über eine vom Anbieter zu diesem Zweck speziell registrierte Anwendung ) vermittelt etwas anderes. Ein anderer Anbieter könnte ebenso gut den Begriff der Rollen insgesamt (und damit den von Containern bereitgestelltenPolicyConfiguration
) ignorieren und stattdessen ausschließlich (von Anwendungen bereitgestellte) Zuordnungen von Prinzipal zu Berechtigung verwenden (und wo diese Berechtigungen nicht auf die von JACC beschränkt sein müssen).