Hi,

Well I am trying to authenticate a user to access an EJB. But nothing seems to 
work out.

I get the exception that No LoginModules Configured. I wonder why this error 
seems to come out. The access works when using simple properties file. Below 
are the various files.

For this purpose I have used the Fibo tutorial.

Any help is appreciated.

Regards,
Kamal

Files:
ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 
2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd";>

<ejb-jar >

   <![CDATA[No Description.]]>
   <display-name>Generated by XDoclet</display-name>

   <enterprise-beans>

      <!-- Session Beans -->
      
         <![CDATA[Description for Fibo]]>
         <display-name>Name for Fibo</display-name>

         <ejb-name>Fibo</ejb-name>

         tutorial.interfaces.FiboHome
         tutorial.interfaces.Fibo
         <ejb-class>tutorial.ejb.FiboBean</ejb-class>
         <session-type>Stateless</session-type>
         <transaction-type>Container</transaction-type>
                 <security-role-ref>
                <role-name>Compute</role-name>
                <role-link>Compute</role-link>
         </security-role-ref>           
      

     <!--
       To add session beans that you have deployment descriptor info for, add
       a file to your XDoclet merge directory called session-beans.xml that 
contains
       the  markup for those beans.
     -->

      <!-- Entity Beans -->
     <!--
       To add entity beans that you have deployment descriptor info for, add
       a file to your XDoclet merge directory called entity-beans.xml that 
contains
       the  markup for those beans.
     -->

      <!-- Message Driven Beans -->
     <!--
       To add message driven beans that you have deployment descriptor info 
for, add
       a file to your XDoclet merge directory called message-driven-beans.xml 
that contains
       the <message-driven></message-driven> markup for those beans.
     -->

   </enterprise-beans>

   <!-- Relationships -->

   <!-- Assembly Descriptor -->
     <!--
       To specify your own assembly descriptor info here, add a file to your
       XDoclet merge directory called assembly-descriptor.xml that contains
       the <assembly-descriptor></assembly-descriptor> markup.
     -->

   <assembly-descriptor >
   <security-role>
            <role-name>Compute</role-name>
   </security-role>
     <!--
       To specify additional security-role elements, add a file in the merge
       directory called ejb-security-roles.xml that contains them.
     -->

   <!-- method permissions -->
     <!--
       To specify additional method-permission elements, add a file in the merge
       directory called ejb-method-permissions.ent that contains them.
     -->
     <method-permission>
            
            
                <ejb-name>Fibo</ejb-name>
                <method-name>create</method-name>
            
     </method-permission>
     
     <method-permission>
            <role-name>Compute</role-name>
            
                <ejb-name>Fibo</ejb-name>
                <method-name>compute</method-name>
            
     </method-permission>

   <!-- transactions -->
     <!--
       To specify additional container-transaction elements, add a file in the 
merge
       directory called ejb-container-transactions.ent that contains them.
     -->

   <!-- finder transactions -->

   <!-- message destinations -->
     <!--
       To specify additional message-destination elements, add a file in the 
merge
       directory called ejb-message-destinations.ent that contains them.
     -->

   <!-- exclude list -->
     <!--
       To specify an exclude-list element, add a file in the merge directory
       called ejb-exclude-list.xml that contains it.
     -->
   </assembly-descriptor>

</ejb-jar>
----------------------------------------------------------------------------------------------------------
jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" 
"http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd";>


        <security-domain>java:/jaas/FiboTest</security-domain>
   <enterprise-beans>

     <!--
       To add beans that you have deployment descriptor info for, add
       a file to your XDoclet merge directory called jboss-beans.xml that 
contains
       the ,  and <message-driven></message-driven>
       markup for those beans.
     -->

      
         <ejb-name>Fibo</ejb-name>
         <jndi-name>ejb/Fibo</jndi-name>
                 <method-attributes>
        </method-attributes>
      

    <!--
      write a merge file jboss-webservices.ent for webservice-description 
    -->

   </enterprise-beans>

     <!--
       To specify your own assembly descriptor info here, add a file to your
       XDoclet merge directory called jboss-assembly-descriptor.xml that 
contains
       the <assembly-descriptor></assembly-descriptor> markup.
     -->
   <assembly-descriptor>
    <!-- message destinations -->
     <!--
       To specify additional message-destination elements, add a file in the 
merge
       directory called jboss-message-destinations.ent that contains them.
     -->
   </assembly-descriptor>

   <resource-managers>
   </resource-managers>

  <!--
    | for container settings, you can merge in jboss-container.xml
    | this can contain <invoker-proxy-bindings/> and <container-configurations/>
  -->


----------------------------------------------------------------------------------------------------------
JUnit Test Case:package jtest;

import junit.framework.TestCase;
import java.util.*;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;

import org.jboss.security.auth.callback.UsernamePasswordHandler;

import tutorial.interfaces.Fibo;
import tutorial.interfaces.FiboHome;


public class Compute extends TestCase {

        /** Home interface */
        protected FiboHome home;
        /**
         * Get the initial naming context
         */
        protected Context getInitialContext() throws Exception {
                Hashtable props = new Hashtable();
                props.put(Context.INITIAL_CONTEXT_FACTORY,
                        "org.jnp.interfaces.NamingContextFactory");
                props.put(Context.URL_PKG_PREFIXES,
                        "org.jboss.naming:org.jnp.interfaces");
                props.put(Context.PROVIDER_URL, "jnp://10.129.78.6:1099");
                Context ctx = new InitialContext(props);
                props.put(Context.SECURITY_PRINCIPAL, "test");
                props.put(Context.SECURITY_CREDENTIALS, "test");
                return ctx;
        }

        /**
         * Get the home interface
         */
        protected FiboHome getHome()
                throws Exception {
                //CallbackHandler handler =
        //    new UsernamePasswordHandler("kermit", "frog");
                SimpleCallbackHandler handler= new 
SimpleCallbackHandler("test","test".toCharArray() );
                /*While executing the param should be 
com.fibo.jaas.appname=testFibo
                 * -Djava.security.auth.login.config==/root/auth.conf           
        
                        -Dcom.fibo.jaas.appname=testFibo
                */
                try{
                System.out.println("Before Login Context");
                
                LoginContext lc = new LoginContext("com.fibo.jaas.appname", 
handler);
                System.out.println("Before Login");
                
        lc.login();
        System.out.println("After Login");
        
                //Context ctx = new InitialContext() ;
                System.out.println("Before context");
                Context ctx = this.getInitialContext();
                System.out.println("after context");
                Object o = ctx.lookup("java:ejb/Fibo");
                System.out.println("after lookup");
                FiboHome intf =(FiboHome) PortableRemoteObject.narrow(o, 
FiboHome.class);
                System.out.println("after home");
                return intf;
        }
        catch (Exception e) {
            e.printStackTrace() ;
        } finally {
            //lc.logout();
        }
        return null;
        }

        /**
         * Set up the test case
         */
        protected void setUp() throws Exception {
                this.home = this.getHome();
        }
        
        public void testCompute() {
                
                Fibo instance;
                double[] out1;
                
                try{
                        this.setUp();
                        instance = this.home.create();
                
                        // Method call
                        out1 = instance.compute( 50);
                        for(int i=0;i<out1.length ;i++)
                        System.out.println(out1);
                }
                catch(Exception e){
                        e.printStackTrace();
                }
                //Various assertions
                System.out.println("Fibo Computed successfully");
        }

}


-----------------------------------------------------------------------------------------------------------
client.conf
testFibo {
    org.jboss.security.ClientLoginModule required
        password-stacking="useFirstPass"
        multi-threaded=true
    ;
};
----------------------------------------------------------------------------------------------------------
mysql-ds.xml
<?xml version="1.0" encoding="UTF-8"?>
 
    <local-tx-datasource> 
        <jndi-name>MySqlDS</jndi-name> 
        <connection-url>jdbc:mysql://localhost:3306/FiboTest</connection-url> 
        <driver-class>com.mysql.jdbc.Driver</driver-class> 
        <user-name>root</user-name> 
         
    </local-tx-datasource> 
 
------------------------------------------------------------------------------------------------------------
login-config.xml
<application-policy name="FiboTest">
        
        <login-module 
code="org.jboss.security.auth.spi.DatabaseServerLoginModule"
            flag="required">
        <module-option name="dsJndiName">java:/MySqlDS</module-option>
            <module-option name="principalsQuery">select Password from 
Principals where          PrincipalID=?</module-option>
        
            <module-option name="rolesQuery">select Role 'Role' from Roles 
where PrincipalID=?</module-option>
         </login-module>
        <!- Working with static files defined below -->
        <!--<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>-->
      
   </application-policy>

        <application-policy name="FiboTestDBRealm">
                
                        <login-module
                                
code="org.jboss.resource.security.ConfiguredIdentityLoginModule"
                                flag="required">
                                <module-option 
name="principal">root</module-option>
                                <module-option 
name="userName">root</module-option>
                                <module-option name="password"></module-option>
                                <module-option 
name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=MySqlDS</module-option>
                        </login-module>
                
        </application-policy>   
-------------------------------------------------------------------------------------------------------------
Any Help is Appreciated.


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

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


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to