SessionContext switches between former logged in users
giga Sep 26, 2013 2:43 AMHi there,
i have a problem with user authentication in ejb layer.
i am using Jboss 7.1.1 Final, but had the same problem with Jboss 5 and 6.
I have a custom login module defined in the standalone.xml
<security-domain name="ASAMOdsSecurityPolicy" cache-type="default"> <authentication> <login-module code="vwg.audi.sensordb.login.AsamOdsLoginModule" flag="required"> ... </login-module> </authentication> </security-domain>
And an implemenation of that login module with code extraction:
public boolean login() throws LoginException { try { // fetch login credentials from callback handler Callback[] callbacks = new Callback[2]; NameCallback nc = new NameCallback("Username"); PasswordCallback pc = new PasswordCallback("Password", false); callbacks[0] = nc; callbacks[1] = pc; this.callbackHandler.handle(callbacks); userName = nc.getName(); pw = new String(pc.getPassword()); this.authenticateAndAuthorizeUser(); } catch (Exception e) { throw new LoginException("Login: technical failure! " + e.getClass().getName() + ": " + e.getMessage()); } return true; } public boolean commit() throws LoginException { Set<Principal> principals = this.subject.getPrincipals(); userPrincipal = this.createPrincipal(this.userName); principals.add(userPrincipal); // add roles this.addRoles(principals, this.user.getRoles()); // add user, he owns the permissions principals.add(this.user); return true; }
I have an EAR with a web and an ejb Project. In web layer, when i look up my subject ( via hhtpSession) everything works fine for me (i get the correct user credential and roles of the logged in user).
But in business layer, when i call the session context (in this case called within an interceptor, which i am using for authorization)
@Resource private SessionContext context;
context.getCallerPrincipal().getName()
i get the user principal of any user who has logged in formerly:
08:12:18,632 INFO [stdout] (http--0.0.0.0-8080-6) sa ... 08:12:18,672 INFO [stdout] (Thread-78) woehrlf ... 08:12:18,682 INFO [stdout] (Thread-70) aggregateSB
he only difference i see between the correct subject (in this case "sa") and the other ones is the thread of the system out (http--0.0.0.0-8080-6 vs Thread-XY).
What am i doing wrong?
Thanks a lot
Best Regards,
giga