<< Back to previous view |
[QB-1345] Exception when LDAP is unaccessible
|
|
Status: | Resolved |
Project: | QuickBuild |
Component/s: | None |
Affects Version/s: | 4.0.53 |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | Igor Filatov | Assigned To: | Robin Shen |
Resolution: | Won't Fix | Votes: | 0 |
Remaining Estimate: | Unknown | Time Spent: | Unknown |
Original Estimate: | Unknown |
Description |
If LDAP authenticator is configured and LDAP server is down, there's an Exception when a LDAP account tries to log in.
How to reproduce: 1. Setup new QB instance 2. Configure a bogus LDAP server 3. Log out 4. Provide random login/passwd 5. -> Error Details: Message: Method onFormSubmitted of interface org.apache.wicket.markup.html.form.IFormSubmitListener targeted at [ [Component id = form]] on component [ [Component id = form]] threw an exception Root cause: java.net.UnknownHostException: ldap.example at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at com.sun.jndi.ldap.Connection.createSocket(Unknown Source) at com.sun.jndi.ldap.Connection.<init>(Unknown Source) at com.sun.jndi.ldap.LdapClient.<init>(Unknown Source) at com.sun.jndi.ldap.LdapClient.getInstance(Unknown Source) at com.sun.jndi.ldap.LdapCtx.connect(Unknown Source) at com.sun.jndi.ldap.LdapCtx.<init>(Unknown Source) at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(Unknown Source) at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(Unknown Source) at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(Unknown Source) at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(Unknown Source) at javax.naming.spi.NamingManager.getInitialContext(Unknown Source) at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source) at javax.naming.InitialContext.init(Unknown Source) at javax.naming.InitialContext.<init>(Unknown Source) at javax.naming.directory.InitialDirContext.<init>(Unknown Source) at com.pmease.quickbuild.plugin.authenticator.ldap.LdapAuthenticator.authenticate(LdapAuthenticator.java:239) at com.pmease.quickbuild.plugin.authenticator.ldap.LdapAuthenticator$$EnhancerByCGLIB$$c85a1a7c.CGLIB$authenticate$0(<generated>) at com.pmease.quickbuild.plugin.authenticator.ldap.LdapAuthenticator$$EnhancerByCGLIB$$c85a1a7c$$FastClassByCGLIB$$c5dd665f.invoke(<generated>) at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215) at com.pmease.quickbuild.DefaultScriptEngine$Interpolator.intercept(DefaultScriptEngine.java:270) at com.pmease.quickbuild.plugin.authenticator.ldap.LdapAuthenticator$$EnhancerByCGLIB$$c85a1a7c.authenticate(<generated>) at com.pmease.quickbuild.security.SecurityHelper.authenticate(SecurityHelper.java:441) at com.pmease.quickbuild.web.page.SignInPage$2.onSubmit(SignInPage.java:82) at org.apache.wicket.markup.html.form.Form$10.component(Form.java:1157) at org.apache.wicket.markup.html.form.Form$10.component(Form.java:1152) at org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:273) at org.apache.wicket.util.visit.Visits.visitPostOrder(Visits.java:244) at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1150) at org.apache.wicket.markup.html.form.Form.process(Form.java:803) at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:728) at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:670) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:272) at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:220) at org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:179) at org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:165) at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:719) at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:63) at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210) at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:253) at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162) at org.apache.wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:159) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at com.pmease.quickbuild.web.WebServlet.service(WebServlet.java:123) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:78) at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:131) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at com.pmease.quickbuild.web.HttpServiceProvider$1$1.service(HttpServiceProvider.java:87) at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:126) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:76) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.service(HttpServerManager.java:317) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:939) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) Expected result: A message like "Access denied" or "No auth methods available" |
Comments |
Comment by Robin Shen [ 21/Aug/12 12:37 AM ] |
QB is designed to let user know the configuration error as soon as possible to take action. One can temporarily disable the LDAP authenticator in authenticators page to allow user to login in before LDAP server is up and running again. |