Blog

Integration von Tivoli Access Manager mit JBoss AS 4.x

Mark Bakker

Aktualisiert Oktober 23, 2025
3 Minuten

Einführung

Zurzeit arbeite ich in einem großen Unternehmen, das Tivoli Access Manager als Autorisierungs- und Authentifizierungsquelle für viele seiner Anwendungen verwendet. Dieses Unternehmen verwendet JBoss als Open-Source-Anwendungsserver-Plattform und setzt diese mehr und mehr ein. Als sie begannen, JBoss zu verwenden, erhielten sie von IBM ein TAM-Plug-in für JBoss. Dieses Plug-in übernahm die komplette Autorisierung und Authentifizierung, indem es JAAS implementierte und alle verwendeten Sicherheitsrollen in TAM registrierte. Dies geschieht während der Bereitstellung.Wenn Sie eine Anwendung mit vielen Rollen haben, ist dies sehr frustrierend, da das Starten sehr viel Zeit in Anspruch nehmen kann (denken Sie an 30 Minuten pro Anwendung), weil TAM alle neuen Rollen synchronisiert.Die meisten Anwendungen bei diesem Kunden verwenden JAAS, haben aber keine speziellen Berechtigungen auf Methodenebene, die mit TAM implementiert werden. Daher sind nur die Rollen wichtig.Nachdem ich dies erkannt hatte, dachte ich, dass es eine gute Idee sein könnte, eine einfachere Lösung für die Integration von TAM und JBoss zu schaffen. Zu diesem Zweck habe ich etwas benutzerdefinierten Code geschrieben (nur 250 Zeilen).

Dinge, die Sie beachten sollten

Bei dieser Methode werden die Header iv-user und iv-groups auf der http-Transportebene verwendet. Ohne Sicherheit auf Transportebene (d.h. ssl) ist es möglich, dies durch einen Man-in-the-Middle-Angriff zu fälschen. Wenn Sie über angemessene Firewall-Regeln und Sicherheitszonen verfügen, muss dies kein Problem sein. Bei dieser Methode können Sie eine Mapping-Datei für die Zuordnung von TAM-Rollen zu Anwendungsrollen verwenden. Mit dem TAM-Modul kann dies zentral verwaltet werden. Da sich diese Rollen aber normalerweise nur zum Zeitpunkt der Bereitstellung ändern, halte ich dies nicht für ein wirkliches Problem.

Die Schritte zur Verwendung dieser Lösung

In der folgenden Übersicht sehen Sie die Schritte, die Sie unternehmen müssen. Nach dieser Übersicht gehe ich auf die einzelnen Schritte im Detail ein.

clip_image002

Schritt 0

Laden Sie das Plugin einschließlich aller Quellen hier herunter.

Schritt 1

Fügen Sie die Datei jboss_sso_tam.jar zum Klassenpfad des Servers hinzu (server/[Profil]/lib)

Schritt 2

Setzen Sie die Autorisierungsmethode in der web.xml innerhalb der Anwendung (application.war/WEB-INF/web.xml) auf BASIC. Legen Sie die Rollen in der web.xml (oder in Anmerkungen) fest. Weitere Informationen über Sicherheitsrollen in Java finden Sie im Java EE 5 Tutorial .

<login-config><auth-method>BASIC</auth-method> ... </login-config> <Sicherheits-Rolle> <Rollen-Name> JBossAdmin</Rollen-Name> </security-role>

web.xml

Schritt 3

Fügen Sie das TAM JBoss-Autorisierungsventil zum Webdeployer (Apache) hinzu. Dazu bearbeiten Sie jboss.web-deployer/META-INF/jboss-service.xml innerhalb des Deploy-Verzeichnisses in einem Serverprofil. Dieses Autorisierungsventil wird aufgerufen, bevor das Servlet oder der statische Inhalt für jede Anfrage aufgerufen wird. Es ist wichtig, dass der Schlüssel auf denselben Wert eingestellt ist wie die Autorisierungsmethode in der web.xml innerhalb der Anwendung (siehe Schritt 2).

<attribute name="Authenticators" serialDataType="jbxb">... <java:property> <java:key>BASIC</java:key> <java:value>com.infra.tam.jboss.TamJBossSSOValve </java:value> </java:property> </attribute>

Jboss-service.xml

Schritt 4

Bearbeiten Sie die Datei login-config.xml im Verzeichnis server/[profle]/conf. Hier müssen Sie das login-Modul zu der verwendeten Anwendungsrichtlinie hinzufügen. In diesem Beispielfall habe ich die Richtlinie jmx-console bearbeitet. Die Sicherheitsdomäne für eine Anwendung entspricht standardmäßig dem Namen der war- oder ear-Datei. (d.h. jmx-console.war Ý jmx-console). Sie können die Sicherheitsdomäne in einer jboss-web.xml-Datei im WEB-INF-Verzeichnis einer Anwendung außer Kraft setzen.

<Anwendungsrichtlinie name = "jmx-console"><Authentifizierung> <Anwendungsrichtlinie name = "jmx-console"> <Authentifizierung> <login-module code="com.infra.tam.jboss.TamJBossSSOLoginModule" flag = "erforderlich"> <module-option name="tamrolesProperties"> props/tamroles.properties</module-option> </login-module> </authentication> </application-policy>

login-config.xml

<jboss-web><security-domain>java:/jaas/jmx-console</security-domain> </jboss-web>

jboss-web.xml Nach der Bearbeitung der Datei login-config.xml ist es möglich, eine Mapping-Datei für die Zuordnung der Tam-Rollen zu Anwendungsrollen zu verwenden. Standardmäßig können Sie dafür die Datei server/[profile]/conf/props/tamroles.properties verwenden. Der Name dieser Datei kann mit einem module-option-Tag mit dem Namen tamrolesProperties überschrieben werden.

TAM_ROLE_A=AppRoleATAM_ROLE_B=AppRoleB ...

tamroles.properties

Verfasst von

Mark Bakker

Contact

Let’s discuss how we can support your journey.