@Stateless public class ScheduledEJB{ @EJB private UserManagerLocal userManager; //Dummy code @Schedule(dayOfMonth="1",month="1") public executeScheduled(){ User demoUser = userManager.getUser(1L); demoUser.setActive(false); //User impersonification code, here I still need to recover the password stored in plaintext, in order to login successfully Query q = entityManager.createNativeQuery("SELECT password FROM credentials WHERE userID = :ID"); q.setParameter("ID",1L); String password = (String)q.getSingleResult(); String userName = demoUser.getUserName(); LoginContext loginContext = new LoginContext("client-login", new UsernamePasswordHandler(userName, password)); try{ loginContext.login(); userManager.updateUser(demoUser); } finally{ loginContext.logout(); } } }