[jboss-user] [Security & JAAS/JBoss] - Cannot access username/password in custom login module

camueller do-not-reply at jboss.com
Thu Aug 24 10:56:09 EDT 2006


Hi,

I've written a custom login module using individual implementations for Principal/Group. Logins to the web container are propagated properly to the EJB container. However logins of remote EJB clients fail since username/password provided by the callbackhandler are null:


  |   public boolean login() throws LoginException {
  | 
  |     try {
  |       log.info("login() called");
  | 
  |       // Get user name and password from request
  |       log.info("Going to the build the name and password call back");
  |       this.callbacks = new Callback[2];
  |       this.callbacks[0] = new NameCallback("Username");
  |       this.callbacks[1] = new PasswordCallback("Password", false);
  | 
  |       log.info("Trying to execute the callbacks using the call back handler");
  |       this.callbackhandler.handle(this.callbacks);
  | 

The login performed by the remote EJB client looks like this:


  | 		  Properties props = new Properties();
  |       props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.security.jndi.JndiLoginInitialContextFactory");
  |       props.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.naming.client");
  |       props.setProperty(Context.PROVIDER_URL, "jnp://localhost:1099");
  |       props.setProperty(Context.SECURITY_PROTOCOL, "pve");
  |       props.setProperty("j2ee.clientName", "PCA_CLI"); // must match display-name in application-client.xml
  | 
  |       props.put(Context.SECURITY_PRINCIPAL, "admin");
  |       props.put(Context.SECURITY_CREDENTIALS, "pca");
  |       this.context = new InitialContext(props);
  |       Object objref = context.lookup(jndiName);
  | 

The security-domain in jboss.xml is set to "pve":


  | <jboss>
  |   <security-domain>java:/jaas/pve</security-domain>
  |   [...]
  | 

The login-config.xml contains the following entries:


  | <policy>
  |     <!-- Used by clients within the application server VM such as
  |     mbeans and servlets that access EJBs.
  |     -->
  |     <application-policy name = "client-login">
  |        <authentication>
  |           <login-module code = "org.jboss.security.ClientLoginModule"
  |              flag = "required">
  |              <!-- Any existing security context will be restored on logout -->
  |              <module-option name="restore-login-identity">true</module-option>
  |           </login-module>
  |        </authentication>
  |     </application-policy>
  |     
  |     <application-policy name = "pve">
  |        <authentication>
  |           <login-module code = "com.wn.pve.security.jaas.PveLoginModule"
  |              flag = "required">
  |              <module-option name = "principalClass">com.wn.pve.platform.jbossjaas.PvePrincipal</module-option>
  |           </login-module>
  |           
  |           <login-module code="org.jboss.security.ClientLoginModule" flag="required" />
  |        </authentication>
  |     </application-policy>
  | 
  |     <!-- Security domain for JBossMQ -->
  |     <application-policy name = "jbossmq">
  |        <authentication>
  |           <login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule"
  |              flag = "required">
  |              <module-option name = "unauthenticatedIdentity">guest</module-option>
  |              <module-option name = "dsJndiName">java:/DefaultDS</module-option>
  |              <module-option name = "principalsQuery">SELECT PASSWD FROM JMS_USERS WHERE USERID=?</module-option>
  |              <module-option name = "rolesQuery">SELECT ROLEID, 'Roles' FROM JMS_ROLES WHERE USERID=?</module-option>
  |           </login-module>
  |        </authentication>
  |     </application-policy>
  | 
  |     <!-- Security domains for testing new jca framework -->
  |     <application-policy name = "HsqlDbRealm">
  |        <authentication>
  |           <login-module code = "org.jboss.resource.security.ConfiguredIdentityLoginModule"
  |              flag = "required">
  |              <module-option name = "principal">sa</module-option>
  |              <module-option name = "userName">sa</module-option>
  |              <module-option name = "password"></module-option>
  |              <module-option name = "managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=DefaultDS</module-option>
  |           </login-module>
  |        </authentication>
  |     </application-policy>
  | 
  |     <application-policy name = "JmsXARealm">
  |        <authentication>
  |           <login-module code = "org.jboss.resource.security.ConfiguredIdentityLoginModule"
  |              flag = "required">
  |              <module-option name = "principal">guest</module-option>
  |              <module-option name = "userName">guest</module-option>
  |              <module-option name = "password">guest</module-option>
  |              <module-option name = "managedConnectionFactoryName">jboss.jca:service=TxCM,name=JmsXA</module-option>
  |           </login-module>
  |        </authentication>
  |     </application-policy>
  | 
  |     <!-- A template configuration for the jmx-console web application. This
  |       defaults to the UsersRolesLoginModule the same as other and should be
  |       changed to a stronger authentication mechanism as required.
  |     -->
  |     <application-policy name = "jmx-console">
  |        <authentication>
  |           <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
  |              flag = "required">
  |            <module-option name="usersProperties">props/jmx-console-users.properties</module-option>
  |            <module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
  |           </login-module>
  |        </authentication>
  |     </application-policy>
  | 
  |     <!-- A template configuration for the web-console web application. This
  |       defaults to the UsersRolesLoginModule the same as other and should be
  |       changed to a stronger authentication mechanism as required.
  |     -->
  |     <application-policy name = "$webConsoleDomain">
  |        <authentication>
  |           <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
  |              flag = "required">
  |              <module-option name="usersProperties">web-console-users.properties</module-option>
  |              <module-option name="rolesProperties">web-console-roles.properties</module-option>
  |           </login-module>
  |        </authentication>
  |     </application-policy>
  | 
  |     <!-- A template configuration for the JBossWS web application (and transport layer!).
  |       This defaults to the UsersRolesLoginModule the same as other and should be
  |       changed to a stronger authentication mechanism as required.
  |     -->
  |     <application-policy name="JBossWS">
  |       <authentication>
  |         <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
  |           flag="required">
  |           <module-option name="usersProperties">props/jbossws-users.properties</module-option>
  |           <module-option name="rolesProperties">props/jbossws-roles.properties</module-option>
  |           <module-option name="unauthenticatedIdentity">anonymous</module-option>
  |         </login-module>
  |       </authentication>
  |     </application-policy>
  | 
  | </policy>
  | 


Anything I might try?

Axel

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3967248#3967248

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3967248



More information about the jboss-user mailing list