Geronimo
  1. Geronimo
  2. GERONIMO-2164

Creating SQL- based security realm fails

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.1
    • Fix Version/s: 1.1.1, 1.2
    • Component/s: console
    • Security Level: public (Regular issues)
    • Labels:
      None
    • Environment:

      Geronimo 1.1, Jetty version, running on Sun Java 1.4.2_08

    • Regression:
      Regression

      Description

      It's not possible to create an SQL-based security realm using the console in Geronimo 1.1.

      Error shown in console:
      Error: Error: Unable to initialize LoginModule: Unable to load, instantiate, register driver null: null

      Error written to Geronimo logfile:

      09:49:15,142 ERROR [SecurityRealmPortlet] Unable to parse ObjectName
      javax.management.MalformedObjectNameException: Missing ':' character in
      ObjectName
      at javax.management.ObjectName.parseDomain(ObjectName.java:417)
      at javax.management.ObjectName.parse(ObjectName.java:385)
      at javax.management.ObjectName.<init>(ObjectName.java:76)
      at javax.management.ObjectName.getInstance(ObjectName.java:261)
      at
      org.apache.geronimo.console.securitymanager.realm.SecurityRealmPortlet$RealmData.load(SecurityRealmPortlet.java:775)
      at
      org.apache.geronimo.console.securitymanager.realm.SecurityRealmPortlet.processAction(SecurityRealmPortlet.java:167)
      at
      org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:229)
      at org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:158)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
      at org.apache.pluto.core.PortletServlet.service(PortletServlet.java:153)
      at
      org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
      at
      org.apache.geronimo.jetty.JettyServletHolder.handle(JettyServletHolder.java:97)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830)
      at
      org.mortbay.jetty.servlet.JSR154Filter.doFilter(JSR154Filter.java:170)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
      at
      org.apache.geronimo.jetty.JettyWebApplicationHandler.dispatch(JettyWebApplicationHandler.java:58)
      at org.mortbay.jetty.servlet.Dispatcher.dispatch(Dispatcher.java:283)
      at org.mortbay.jetty.servlet.Dispatcher.include(Dispatcher.java:163)
      at
      org.apache.pluto.invoker.impl.PortletInvokerImpl.invoke(PortletInvokerImpl.java:120)
      at
      org.apache.pluto.invoker.impl.PortletInvokerImpl.action(PortletInvokerImpl.java:68)
      at
      org.apache.pluto.PortletContainerImpl.processPortletAction(PortletContainerImpl.java:164)
      at
      org.apache.pluto.portalImpl.core.PortletContainerWrapperImpl.processPortletAction(PortletContainerWrapperImpl.java:82)
      at org.apache.pluto.portalImpl.Servlet.doGet(Servlet.java:227)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
      at
      org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
      at
      org.apache.geronimo.jetty.JettyServletHolder.handle(JettyServletHolder.java:97)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830)
      at
      org.mortbay.jetty.servlet.JSR154Filter.doFilter(JSR154Filter.java:170)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
      at
      org.apache.geronimo.jetty.JettyWebApplicationHandler.dispatch(JettyWebApplicationHandler.java:58)
      at
      org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
      at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
      at
      org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
      at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
      at org.mortbay.http.HttpServer.service(HttpServer.java:909)
      at org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
      at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982)
      at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833)
      at
      org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
      at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
      at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
      09:49:15,142 WARN [SecurityRealmPortlet] Testing with options

      {org.apache.geronimo.security.realm.GenericSecurityRealm.CLASSLOADER=[org.apache.geronimo.kernel.classloader.JarFileClassLoader id=geronimo/webconsole-jetty_standard.war/1.1/car], groupSelect=select userid, groupname from groups where userid=?, userSelect=select userid, password from users where userid=?}

      09:49:15,142 WARN [SecurityRealmPortlet] Unable to initialize LoginModule
      java.lang.IllegalArgumentException: Unable to load, instantiate, register
      driver null: null
      at
      org.apache.geronimo.security.realm.providers.SQLLoginModule.initialize(SQLLoginModule.java:145)
      at
      org.apache.geronimo.console.util.KernelManagementHelper.testLoginModule(KernelManagementHelper.java:389)
      at
      org.apache.geronimo.console.util.PortletManager.testLoginModule(PortletManager.java:154)
      at
      org.apache.geronimo.console.securitymanager.realm.SecurityRealmPortlet.actionTestLoginModuleLoad(SecurityRealmPortlet.java:265)
      at
      org.apache.geronimo.console.securitymanager.realm.SecurityRealmPortlet.processAction(SecurityRealmPortlet.java:183)
      at
      org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:229)
      at org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:158)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
      at org.apache.pluto.core.PortletServlet.service(PortletServlet.java:153)
      at
      org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
      at
      org.apache.geronimo.jetty.JettyServletHolder.handle(JettyServletHolder.java:97)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830)
      at
      org.mortbay.jetty.servlet.JSR154Filter.doFilter(JSR154Filter.java:170)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
      at
      org.apache.geronimo.jetty.JettyWebApplicationHandler.dispatch(JettyWebApplicationHandler.java:58)
      at org.mortbay.jetty.servlet.Dispatcher.dispatch(Dispatcher.java:283)
      at org.mortbay.jetty.servlet.Dispatcher.include(Dispatcher.java:163)
      at
      org.apache.pluto.invoker.impl.PortletInvokerImpl.invoke(PortletInvokerImpl.java:120)
      at
      org.apache.pluto.invoker.impl.PortletInvokerImpl.action(PortletInvokerImpl.java:68)
      at
      org.apache.pluto.PortletContainerImpl.processPortletAction(PortletContainerImpl.java:164)
      at
      org.apache.pluto.portalImpl.core.PortletContainerWrapperImpl.processPortletAction(PortletContainerWrapperImpl.java:82)
      at org.apache.pluto.portalImpl.Servlet.doGet(Servlet.java:227)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
      at
      org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
      at
      org.apache.geronimo.jetty.JettyServletHolder.handle(JettyServletHolder.java:97)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830)
      at
      org.mortbay.jetty.servlet.JSR154Filter.doFilter(JSR154Filter.java:170)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
      at
      org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
      at
      org.apache.geronimo.jetty.JettyWebApplicationHandler.dispatch(JettyWebApplicationHandler.java:58)
      at
      org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
      at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
      at
      org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
      at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
      at org.mortbay.http.HttpServer.service(HttpServer.java:909)
      at org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
      at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982)
      at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833)
      at
      org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
      at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
      at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)

      Steps to reproduce the error on a fresh Geronimo 1.1 installation (tested with Jetty version):

      1. Create a new database called testdb, create and fill tables for users and
      groups

      SQL statements:

      create table users (
      userid varchar(15) primary key,
      password varchar(15),
      username varchar(20)
      );

      create table groups (
      userid varchar(15),
      groupname varchar(20),
      primary key (userid, groupname)
      );

      insert into users values ('admin', 'password', 'Administrator');
      insert into groups values ('admin', 'AdminGroup');

      2. Create Database pool (Database Pools -> Using the Geronimo database pool
      wizard)

      Step 1

      • Name: testpool
      • Database type: Derby embedded

      Step 2:

      • JDBC Driver (pre defined value): org.apache.derby.jdbc.EmbeddedDriver
      • Driver JAR: org.apache.derby/derby/10.1.1.0/jar
      • Database: testdb

      Step 3:
      JDBC connect url (pre defined): jdbc:derby:testdb

      3. Create Security Realm (Security Realms -> Add new security realm)

      Step 1:

      • Name of realm: testrealm
      • Realm type: Database (SQL) Realm
      • User select SQL: select userid, password from users where userid=?
      • Group select: select userid, groupname from groups where userid=?
      • Database pool: testpool

      --> Clicking "Next" produces the error.

        Activity

        Markus Hanecke created issue -
        Aaron Mulder made changes -
        Field Original Value New Value
        Fix Version/s 1.1.1 [ 12311927 ]
        David Jencks made changes -
        Assignee David Jencks [ djencks ]
        David Jencks made changes -
        Resolution Fixed [ 1 ]
        Fix Version/s 1.2 [ 12310181 ]
        Status Open [ 1 ] Closed [ 6 ]
        David Blevins made changes -
        Workflow jira [ 12374807 ] RTC Workflow [ 12379434 ]
        Alan Cabrera made changes -
        Workflow RTC Workflow [ 12379434 ] jira [ 12381205 ]

          People

          • Assignee:
            David Jencks
            Reporter:
            Markus Hanecke
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development