Cómo propagar el Asunto JAAS al llamar a un EJB remoto (RMI sobre IIOP) desde un cliente puro

Estoy probando la propagación deJAAS Asunto con unprincipal personalizado desde un cliente EJB independiente que se ejecuta en un tiempo de ejecución Java sin procesar a un servidor JavaEE. Estoy apuntando tanto a implementaciones de JBoss como de WebSphere.

De acuerdo aeste hilo del foro Esperaba que funcionara con JBoss fácilmente.

Aquí está mi fragmento de código de código de cliente EJB:

Subject subject = new Subject();
Principal myPrincipal = new MyPrincipal("me I myself");
subject.getPrincipals().add(myPrincipal);

PrivilegedExceptionAction<String> action = new PrivilegedExceptionAction<String>() {
    public String run() throws Exception {
            String result;
            System.out.println("Current Subject: " + Subject.getSubject(AccessController.getContext()));
            InitialContext ic = new InitialContext();
            Business1 b = (Business1) ic.lookup("StatelessBusiness1");
            result = b.getNewMessage("Hello World");
            return result;
        }
    };

result = subject.doAs(subject, action);
System.out.println("result "+result);

El código del lado del servidor es:

public String getNewMessage(String msg) {
    System.out.println("getNewMessage principal: " + sessionContext.getCallerPrincipal());
    System.out.println("Current Subject: " + Subject.getSubject(AccessController.getContext()));
    return "getNewMessage: " + msg;
}

Para estar seguro, incluso si es el comportamiento predeterminado, he agregado esta sección a miejb-jar.xml bean de sesión:

<security-identity>
   <use-caller-identity/>
</security-identity>

Mi bean de sesión no está protegido por ningún rol.

De acuerdo aesta sección de IBM WebSphere Infocenter, También he habilitado la propiedad del sistemacom.ibm.CSI.rmiOutboundPropagationEnabled=true.

Técnicamente hablando, la llamada de servicio funciona correctamente en JBoss o WebSphere. Pero el Asunto JAAS que incluye mi principal personalizado creado en el cliente no se propaga al servidor. O por supuesto, elSubject volcado justo antes de la creación del contexto JNDI y la llamada EJB está bien.

Ejecuto la misma versión de Java Runtime para servidor y cliente (IBM Java6 SR9 FP2 ...),MyPrincipal La clase serializable está disponible en el servidor ClassPath (AppServer/lib/ext para WebSphere,server/default/lib para JBoss)

Vertederos de WebSphere:

[8/31/12 11:56:26:514 CEST] 00000024 SystemOut     O getNewMessage principal: UNAUTHENTICATED
[8/31/12 11:56:26:515 CEST] 00000024 SystemOut     O Current Subject: null

JBoss volcados:

 12:30:20,540 INFO  [STDOUT] getNewMessage principal: anonymous
 12:30:20,540 INFO  [STDOUT] Current Subject: null

Por supuesto, me he perdido algún tipo de hechizo mágico. Sabes cuál ?

Respuestas a la pregunta(2)

Su respuesta a la pregunta