Estoy intentando ejecutar código dentro de JBoss Recipiente bajo una autenticación diferente por la tala mediante programación en un usuario de esa manera (manejo de excepciones despojado):Login un usuario mediante programación a través de JAAS
LoginContext ctx = ctx =
new LoginContext("MyLoginSchema",
new UsernamePasswordCallbackHandler("newuser", "")
);
ctx.login();
Subject.doAs(ctx.getSubject(), new PrivilegedAction<T>() {
@Override
public T run() {
Subject.getSubject(AccessController.getContext());
InitialContext ic = new InitialContext();
EJBContext sctxLookup = (EJBContext) ic.lookup("java:comp/EJBContext");
Principal principal = sctxLookup.getCallerPrincipal();
}
});
sesión de newuser
obras (Call de LoginModule
fue exitoso) pero Subject.doAs()
no asocia el nuevo Asunto con el EJBContext
. El código en el run()
-Método aún recupera el principal del usuario anterior de EJBContext
.
He probado otro método de recuperar el usuario conectado, pero mismo comportamiento aquí:
Subject caller = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
¿Alguna idea?
Sí! Ese es el punto. Agregué ClientLoginModule y funcionó. – roehrijn