Uploaded image for project: 'FishEye'
  1. FishEye
  2. FE-1057

Crowd authentication throws a 404 error if you do not include the trailing "/" when specifying the Crowd URL

    XMLWordPrintable

Details

    Description

      Steps to reproduce

      1) Setup Crowd Authentication to a crowd instance.
      2) In the Crowd URL remove the trailing "/"

      I.e. if the URL is
      http://192.168.3.59:8095/crowd/services/

      then specify

      http://192.168.3.59:8095/crowd/services

      3) Then press Re-Sync

      You will get an error as follows:

      2009-01-19 09:01:30,015 ERROR [btpool0-9] org.codehaus.xfire.transport.http.HttpChannel org.codehaus.xfire.transport.http.HttpChannel-sendViaClient - Server returned error code = 404 for URI : http://192.168.3.59:8095/crowd/servicesSecurityServer. Check server logs for details
      2009-01-19 09:01:30,031 WARN  [btpool0-9] fisheye.app com.cenqua.fisheye.user.crowd.CrowdAuth-listGroups - Problem communicating with Crowd
      org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Server returned error code = 404 for URI : http://192.168.3.59:8095/crowd/servicesSecurityServer. Check server logs for details
      org.codehaus.xfire.fault.XFireFault: Server returned error code = 404 for URI : http://192.168.3.59:8095/crowd/servicesSecurityServer. Check server logs for details
      	at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
      	at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:83)
      	at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
      	at org.codehaus.xfire.client.Client.invoke(Client.java:336)
      	at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
      	at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
      	at $Proxy62.findAllGroupNames(Unknown Source)
      	at com.atlassian.crowd.integration.service.soap.client.SecurityServerClientImpl.findAllGroupNames(SecurityServerClientImpl.java:1037)
      	at com.cenqua.fisheye.user.crowd.CrowdAuth.listGroups(CrowdAuth.java:245)
      	at com.cenqua.fisheye.user.UserManager.getGroupInfos(UserManager.java:805)
      	at com.cenqua.fisheye.web.admin.actions.BaseAdminAction.getGroupInfoMap(BaseAdminAction.java:38)
      	at com.cenqua.fisheye.web.admin.actions.BaseAdminAction.getGroupInfos(BaseAdminAction.java:31)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:585)
      	at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:830)
      	at ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:1414)
      	at ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:60)
      	at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:147)
      	at com.opensymphony.xwork.util.OgnlValueStack$ObjectAccessor.getProperty(OgnlValueStack.java:57)
      	at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2210)
      	at com.opensymphony.xwork.util.CompoundRootAccessor.getProperty(CompoundRootAccessor.java:102)
      	at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2210)
      	at ognl.ASTProperty.getValueBody(ASTProperty.java:114)
      	at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
      	at ognl.SimpleNode.getValue(SimpleNode.java:258)
      	at ognl.Ognl.getValue(Ognl.java:494)
      	at ognl.Ognl.getValue(Ognl.java:458)
      	at com.opensymphony.xwork.util.OgnlUtil.getValue(OgnlUtil.java:192)
      	at com.opensymphony.xwork.util.OgnlValueStack.findValue(OgnlValueStack.java:224)
      	at com.opensymphony.webwork.components.Component.findValue(Component.java:240)
      	at com.opensymphony.webwork.components.ListUIBean.evaluateExtraParams(ListUIBean.java:52)
      	at com.opensymphony.webwork.components.Select.evaluateExtraParams(Select.java:83)
      	at com.opensymphony.webwork.components.UIBean.evaluateParams(UIBean.java:885)
      	at com.opensymphony.webwork.components.UIBean.end(UIBean.java:591)
      	at com.opensymphony.webwork.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:21)
      	at org.apache.jsp.WEB_002dINF.jsp.admin.useradmin_jsp._jspx_meth_ww_select_0(useradmin_jsp.java:837)
      	at org.apache.jsp.WEB_002dINF.jsp.admin.useradmin_jsp._jspService(useradmin_jsp.java:237)
      	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:93)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1144)
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at com.cenqua.crucible.filters.CrucibleFilter.doFilter(CrucibleFilter.java:140)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at com.cenqua.fisheye.web.filters.TotalityFilter.doFilter(TotalityFilter.java:192)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:98)
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
      	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
      	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
      	at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:285)
      	at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
      	at com.opensymphony.webwork.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:114)
      	at com.opensymphony.webwork.dispatcher.WebWorkResultSupport.execute(WebWorkResultSupport.java:143)
      	at com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:313)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:208)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
      	at com.cenqua.fisheye.web.admin.interceptors.LoginInterceptor.intercept(LoginInterceptor.java:30)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
      	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
      	at com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:186)
      	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
      	at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)
      	at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:273)
      	at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:111)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1144)
      	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at com.cenqua.crucible.filters.CrucibleFilter.doFilter(CrucibleFilter.java:140)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at com.cenqua.fisheye.web.filters.TotalityFilter.doFilter(TotalityFilter.java:192)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:98)
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81)
      	at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:129)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at com.cenqua.fisheye.web.filters.ProductInfoFilter.doFilter(ProductInfoFilter.java:32)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at com.cenqua.fisheye.web.filters.UpfrontFilter.doFilter(UpfrontFilter.java:39)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1136)
      	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
      	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
      	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
      	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
      	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
      	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      	at org.mortbay.jetty.Server.handle(Server.java:324)
      	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
      	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
      	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
      	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
      	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
      	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
      	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
      Caused by: org.codehaus.xfire.XFireRuntimeException: Server returned error code = 404 for URI : http://192.168.3.59:8095/crowd/servicesSecurityServer. Check server logs for details
      	at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:130)
      	at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
      	at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
      	at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
      	at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
      	... 118 more
      

      We should check for the trailing "/" and if not present, add it ourselves.

      Attachments

        Activity

          People

            Unassigned Unassigned
            pkamal Partha
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: