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.
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.
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
Unsere Ideen
Weitere Blogs
Contact



