Sto cercando di eseguire il codice all'interno di JBoss contenitore sotto un autenticazione diverso da programatically login di un utente del genere (la gestione delle eccezioni messo a nudo):login di un utente a livello di codice tramite 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();
}
});
Entrata di newuser
opere (Chiamata di LoginModule
ha avuto esito positivo) ma Subject.doAs()
non associa il nuovo oggetto allo EJBContext
. Il codice nel metodo run()
-method recupera ancora il principal del vecchio utente da EJBContext
.
ho provato un altro metodo di recupero del utente collegato, ma stesso comportamento qui:
Subject caller = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
Tutte le idee?
Sì! Questo è il punto. Ho aggiunto ClientLoginModule e ha funzionato. – roehrijn