Problem with authorization in standalone client
zlosynus Aug 15, 2008 10:53 AMHi,
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.