See Thread at: http://www.techienuggets.com/Detail?tx=21643 Posted on behalf of 
a User

I am having the same problem. were you able to solve it? thanks a lot.

In Response To: 

Hi,

I have a JBoss 4.2.2.GA WebService application, where the WebServices should be 
secured.
So I wrote a custom LoginModule for JBoss 4.2.2.GA which extends the 
org.jboss.security.auth.spi.UsernamePasswordLoginModule. I defined an 
<application-policy> in the login-config.xml and I use the @SecurityDomain 
annotation for the secured @WebService beans

So far so good: My LoginModule is called correctly.

Inside the LoginModule I want to call a local @Stateless bean which provides 
methods to retrieve the user/roles via Hibernate from the database.

But how to access this bean? 

I tried the @EJB annotation => no success
I tried a lookup via JNDI => no success (NameNotFoundException)

MyLoginModule:


  | public class MyLoginModule extends UsernamePasswordLoginModule
  | {
  |     private MyAuthenticationService myAuthenticationService;
  | 
  |     @Override
  |     public void initialize(Subject subject, CallbackHandler 
callbackHandler, Map sharedState, Map options)
  |     {
  |             super.initialize(subject, callbackHandler, sharedState, 
options);
  |             try {
  |                     Context jndiContext = new InitialContext();
  |                     this.myAuthenticationService = 
(MyAuthenticationService) 
jndiContext.lookup("java:comp/env/ejb/MyAuthenticationServiceImpl"); // does 
not work (ejb not bound)
  |                 // does not work: I tried all name combinations
  |                 // 
jndiContext.lookup("java:comp.ejb3/env/ejb/MyAuthenticationServiceImpl") => 
does not work (ejb not bound)
  |                 // jndiContext.lookup("ejb/MyAuthenticationServiceImpl") => 
does not work (ejb not bound)
  |                 // jndiContext.lookup("MyAuthenticationServiceImpl") => 
does not work (MyAuthenticationServiceImpl not bound)
  |             }
  |             catch (NamingException ex) {
  |                     // TODO Auto-generated catch block
  |                     ex.printStackTrace();
  |             }
  |     }
  | 
  |     @Override
  |     protected Principal createIdentity(String username) throws Exception
  |     {
  |             MyUser user = 
this.myAuthenticationService.retrieveUserByLoginName(username);
  |             return user;
  |     }
  | 
  |     @Override
  |     protected String getUsersPassword() throws LoginException
  |     {
  |             MyUser myUser = (MyUser) this.getIdentity();
  |             return myUser.getPassword();
  |     }
  | 
  |     @Override
  |     protected Group[] getRoleSets() throws LoginException
  |     {
  |             Group roles = new SimpleGroup("Roles"); // "Roles" is the 
expected GroupName for the roles
  | 
  |             for (Principal role : ((MyUser) this.getIdentity()).getRoles()) 
{
  |                     roles.addMember(role);
  |             }
  | 
  |             return new Group[] { roles };
  |     }
  | 
  |     @EJB // has no effect
  |     public void setMyAuthenticationService(MyAuthenticationService 
myAuthenticationService)
  |     {
  |             this.myAuthenticationService = myAuthenticationService;
  |     }
  | 
  | }
  | 
  | 

MyAuthenticationServiceImpl:


  | @Stateless
  | public class MyAuthenticationServiceImpl implements MyAuthenticationService
  | {
  | 
  |         // ...
  | 
  |     public MyUser retrieveUserByLoginName(String loginName) throws 
LoginException
  |     {
  |             // here the DAO is called which uses the EntityManager
  |     }
  | 
  |         // ...
  |     
  | }
  | 

MyAuthenticationService:


  | public interface JaasService
  | {
  |         // ...
  |     public MyUser retrieveUserByLoginName(String loginName) throws 
LoginException;
  |         // ...
  | }
  | 

What is wrong?


_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to