[jboss-dev-forums] [JBoss AS 7 Development] - Re: remote ejb client username is encrypted at the server(JBOSS7.1 CR1)

apparaonali do-not-reply at jboss.com
Tue Feb 21 11:51:04 EST 2012


apparaonali [https://community.jboss.org/people/apparaonali] created the discussion

"Re: remote ejb client username is encrypted at the server(JBOSS7.1 CR1)"

To view the discussion, visit: https://community.jboss.org/message/718417#718417

--------------------------------------------------------------
Thanks for your quick reply.

When my test sesion bean trying to get the principal from the EJBContext, it is throwing the above error. Please find the detais of my test below.

TestBean:
=======




@Stateless
@SecurityDomain(value = "AppuLogin")*
* 
*public  class SessionBean implements SessionBeanInterface {      @Resource **private** EJBContext context;*Principal pp =  context.getCallerPrincipal();* 

     @Override     public  String getPrincipal() {* 
          System.++out++.println(pp.toString());




**          return** (String) (context.getCallerPrincipal().getName());

     }





#

}

Standalone Remote Client code:
=========================
public class RemoteEJBClient {
    
    private static final String USER_LOGIN_NAME = "admin";
    private static final String USER_PASSWORD = "admin";
    
    static {
        Security.addProvider(new JBossSaslProvider());
    }
    
    public static final String AUTH_LOGIN_CONFIG = "java.security.auth.login.config";
    
    public static final String AUTH_CONF = "/auth.conf";
    public static void main(String[] args) throws Exception {
        
        if (System.getProperties().getProperty(RemoteEJBClient.AUTH_LOGIN_CONFIG) == null) {
            URL url = RemoteEJBClient.class.getClass().getResource(RemoteEJBClient.AUTH_CONF);
            if (url != null) {
                System.getProperties().setProperty(RemoteEJBClient.AUTH_LOGIN_CONFIG, url.toString());
            }
        }
        
        AppCallbackHandler callbackHandler = new AppCallbackHandler(USER_LOGIN_NAME, USER_PASSWORD.toCharArray());
        LoginContext loginContext = new LoginContext("logincontextname", callbackHandler);
        loginContext.login();
        
        final Hashtable jndiProperties = new Hashtable();
        jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        final Context context = new InitialContext(jndiProperties);

        invokeStatelessBean(context);
    }
    private static void invokeStatelessBean(Context context) throws NamingException, LoginException {
        final SessionBeanInterface statelessSessionBeanInterface = lookupRemoteStatelessCalculator(context);
        System.out.println("Obtained a remote stateless SessionBeanInterface for invocation");
        try {
            final String principal = statelessSessionBeanInterface.getPrincipal();
            System.out.println("EJB principal " + statelessSessionBeanInterface.getPrincipal());
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
    }

    private static SessionBeanInterface lookupRemoteStatelessCalculator(Context context) throws NamingException, LoginException {

        final String appName = "TestEAR";
        final String moduleName = "TestEJB";
        final String distinctName = "";
        final String beanName = "SessionBean";
        final String viewClassName = SessionBeanInterface.class.getName();
        System.out.println("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName);
        return (SessionBeanInterface) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName
                + "!" + viewClassName);
    }
}

Client ejb properties:
===============










remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false


remote.connections=default


remote.connection.default.host=
localhost


remote.connection.default.port = 4447

remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false


remote.connection.two.host=
localhost


remote.connection.two.port = 4447

remote.connection.two.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

aut.conf:
======
logincontextname
 {
org.jboss.security.ClientLoginModule required
;
};
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/718417#718417]

Start a new discussion in JBoss AS 7 Development at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2225]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-dev-forums/attachments/20120221/6acece0b/attachment.html 


More information about the jboss-dev-forums mailing list