[jboss-user] [Security & JAAS/JBoss] - Problem with authorization in standalone client

zlosynus do-not-reply at jboss.com
Fri Aug 15 10:53:22 EDT 2008


Hi,

I am programming standalone client and I would like to use DatabaseServerLoginModule. So I added these lines to login-config.xml.


  |    <application-policy name = "Konfigurator">
  |        <authentication>
  |           <login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule"
  |              flag = "required">
  |              <module-option name = "unauthenticatedIdentity">guest</module-option>
  |              <module-option name = "dsJndiName">java:/MySQLDS</module-option>
  |              <module-option name = "principalsQuery">SELECT password FROM Users WHERE login=?</module-option>
  |              <module-option name = "rolesQuery">SELECT roles, 'Roles' FROM UserRoles WHERE login=?</module-option>
  |           </login-module>
  |        </authentication>
  |     </application-policy>
  | 

At my client I am using following code to login:

  |         System.setProperty("java.security.auth.login.config", "auth.conf");  
  |         Konektor.KonektorHandler handler = new Konektor.KonektorHandler(userName, password);
  |         try 
  |         {   
  |             LoginContext lc = new LoginContext("Konfigurator", handler);
  |             lc.login();
  |         }   
  |         catch (Exception e)
  |         {   
  |             System.out.println( "Login Exception: " + e.getMessage() );
  |         }   
  | 
  | 

Here is code of auth.conf:

  | Konfigurator {
  |      org.jboss.security.auth.spi.DatabaseServerLoginModule required;
  | };
  | 

And here is definition of KonektorHandler:

  |  class KonektorHandler implements CallbackHandler
  |     {
  |         private String login;
  |         private String password;
  | 
  |         public KonektorHandler(String login, String password)
  |         {
  |             this.login = login;
  |             this.password = password;
  |         }
  | 
  |         public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException
  |         {
  |             for (int i = 0; i < callbacks.length; i++)
  |             {
  |                 if (callbacks instanceof NameCallback)
  |                 {
  |                     NameCallback nc = (NameCallback)callbacks;
  |                     nc.setName(login);
  |                 }
  |                 else if (callbacks instanceof PasswordCallback)
  |                 {
  |                     PasswordCallback pc = (PasswordCallback)callbacks;
  |                     pc.setPassword(password.toCharArray());
  |                 }
  |                 else
  |                 {
  |                     throw new UnsupportedCallbackException(callbacks, "Unrecognized Callback");
  |                 }
  |             }
  |         }
  |     }
  | 

But when I am running client, I receave following exception at function LoginContext.login() and I don't understand it at all.

  |  [java] Login Exception: java.lang.NoClassDefFoundError: org/jboss/system/ServiceMBeanSupport
  |      [java] 	at java.lang.ClassLoader.defineClass1(Native Method)
  |      [java] 	at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
  |      [java] 	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
  |      [java] 	at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
  |      [java] 	at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
  |      [java] 	at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
  |      [java] 	at java.security.AccessController.doPrivileged(Native Method)
  |      [java] 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  |      [java] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
  |      [java] 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
  |      [java] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
  |      [java] 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
  |      [java] 	at org.jboss.tm.TransactionManagerLocator.tryJNDI(TransactionManagerLocator.java:96)
  |      [java] 	at org.jboss.tm.TransactionManagerLocator.locate(TransactionManagerLocator.java:77)
  |      [java] 	at org.jboss.tm.TransactionDemarcationSupport.suspendAnyTransaction(TransactionDemarcationSupport.java:48)
  |      [java] 	at org.jboss.security.auth.spi.DatabaseServerLoginModule.getUsersPassword(DatabaseServerLoginModule.java:132)
  |      [java] 	at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:206)
  |      [java] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |      [java] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |      [java] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |      [java] 	at java.lang.reflect.Method.invoke(Method.java:597)
  |      [java] 	at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
  |      [java] 	at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
  |      [java] 	at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
  |      [java] 	at java.security.AccessController.doPrivileged(Native Method)
  |      [java] 	at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
  |      [java] 	at javax.security.auth.login.LoginContext.login(LoginContext.java:579)
  |      [java] 	at Konektor.loginToSystem(Unknown Source)
  |      [java] 	at MainWindow.tryLogin(Unknown Source)
  |      [java] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |      [java] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 

Is there something that I am missing?? Whats wrong?!

Thanks.

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

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



More information about the jboss-user mailing list