Wie propagiert man JAAS Subject beim Aufruf eines Remote EJB (RMI over IIOP) von einem reinen Client

9

Ich teste die Verbreitung von JAAS Subject mit ein benutzerdefinierter Principal von einem eigenständigen EJB-Client, der auf einer unformatierten Java-Laufzeitumgebung ausgeführt wird zu einem JavaEE-Server. Ich ziele sowohl auf JBoss als auch auf WebSphere-Implementierungen ab.

Laut diesem Forum-Thread habe ich erwartet, dass es problemlos mit JBoss funktionieren würde.

Hier ist mein EJB-Client-Code-Code-Snippet:

%Vor%

Serverseitiger Code ist:

%Vor%

Um sicher zu gehen, habe ich diesen Abschnitt auch meiner Standardsitzung ejb-jar.xml hinzugefügt:

%Vor%

Meine Session-Bean ist nicht durch eine Rolle geschützt.

Laut dieser IBM WebSphere-Infocenter-Abschnitt , habe ich auch die Systemeigenschaft com.ibm.CSI.rmiOutboundPropagationEnabled=true .

aktiviert

Technisch gesehen funktioniert der Serviceaufruf entweder auf JBoss oder auf WebSphere. Aber der JAAS-Betreff mit meinem benutzerdefinierten Prinzipal, der auf dem Client erstellt wurde, wird nicht an den Server weitergegeben. Oder natürlich, das Subject wird kurz vor der Erstellung des JNDI-Kontexts und dem EJB-Aufruf ausgegeben.

Ich verwende die gleiche Java-Laufzeitversion für Server und Client (IBM Java6 SR9 FP2 ...), MyPrincipal serialisierbare Klasse ist im Server ClassPath verfügbar ( AppServer/lib/ext für WebSphere, server/default/lib für JBoss)

WebSphere-Dumps:

%Vor%

JBoss-Dumps:

%Vor%

Sicherlich habe ich eine Art Zauberspruch verpasst. Weißt du welchen?

    
Yves Martin 31.08.2012, 10:42
quelle

2 Antworten

3

Ich vermute, dass auf dem WAS-Server keine Sicherheit aktiviert ist. Da die Sicherheit nicht aktiviert ist und Sie sich nicht bei WAS authentifiziert haben, gibt es keine Anmeldeinformationen. Daher gibt Ihr Aufruf an getCallerPrincipal UNAUTHENTIZIERT zurück.

Wenn Sie die Anwendungssicherheit in WAS aktivieren, müssen Sie sich über CSIv2-Protokoll . Das Erstellen eines eigenen JAAS-Betreffs in einem eigenständigen Client führt nicht dazu. Wenn es möglich wäre, könnte jeder eine "hey, ich bin" -Beamigung erstellen und sich bei jeder entfernten EJB anmelden, die er wollte.

Ihr Code funktioniert auf dem Server, indem er Ihr Thema an den laufenden Thread der Ausführung anfügt. Fließende Subjekte / Berechtigungsnachweise über die Leitung erfordern ein Protokoll, um die Serialisierung der Subjekt-Information zu bewirken und das Vertrauen der Partei zu gewährleisten, die die Identität in der Berechtigung behauptet. Von einem eigenständigen Client akzeptiert WAS Benutzerinformationen in Form von Basisautorisierung, LTPA und Kerberos. Dies kann in einer eingehenden CSIv2-Konfiguration in der Admin-Konsole konfiguriert werden. Es ist in dem Info-Center-Link dokumentiert, auf den zuvor verwiesen wurde.

Es macht Spaß. Viel Glück.

    
pglezen 12.09.2012, 04:15
quelle
0

Wahrscheinlich hilft Ihnen das mit dem Preis, proprietäre Websphere-Klassen zu verwenden. wie ich mich erinnere, propagiert websphere das jaas caller-subject nicht, das ist typisch für ibm

%Vor%

Siehe auch: Den Betreff des Aufrufers aus dem Thread für JAAS abrufen und Gehen Sie den Betreff "RunAs" aus dem Thread

    
Murlo 26.04.2013 14:27
quelle

Tags und Links