Uploaded image for project: 'Artifactory Binary Repository'
  1. Artifactory Binary Repository
  2. RTFACT-16596

Cannot add Artifactory as an Auth provider in Xray

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: High
    • Resolution: Fixed
    • Affects Version/s: 5.10.4
    • Fix Version/s: 6.2.0
    • Component/s: Access Server, Xray
    • Labels:
      None

      Description

      Symptoms: When attempting to save the Auth Settings found under Admin -> Security -> Authentication in Xray, you see a "Failed to save access config" error in the UI.

      Steps to reproduce:

      1. Link an Xray 2.0.2 with an Artifactory 5.10.4 HA cluster, linked to an Oracle database
      2. Set the "Authentication Provider" section in Xray to the 5.10.4 Artifactory
      3. Observe errors in the Artifactory logs, and the UI error in Xray

      This looks to be an Access server problem when it interacts with the Oracle DB specifically.

      Note that Xray currently does display the Artifactory as the authentication provider, however the authentications will no longer work (See screenshot for evidence)

      The following stack trace was pulled from the Access server's logs found in $ARTIFACTORY_HOME/access/logs/access.log:

       

      2018-05-04 18:20:23,630 [http-nio-8081-exec-10] [ERROR] (o.j.a.s.r.e.m.DefaultExceptionMapper:25) - General exception mapper caught:Could not create permission Admins
      org.jfrog.access.server.exception.AccessStorageException: Could not create permission Admins
      at org.jfrog.access.server.service.db.PermissionStorageServiceImpl.createPermission(PermissionStorageServiceImpl.java:186)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
      at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
      at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)

      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)

      at com.sun.proxy.$Proxy72.createPermission(Unknown Source)

      at org.jfrog.access.server.service.permission.PermissionsServiceImpl.create(PermissionsServiceImpl.java:79)

      at org.jfrog.access.server.rest.resource.permission.PermissionsResource.createPermission(PermissionsResource.java:54)

      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

      at java.lang.reflect.Method.invoke(Method.java:498)

      at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)

      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)

      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)

      at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)

      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)

      at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)

      at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)

      at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)

      at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)

      at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)

      at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)

      at org.glassfish.jersey.internal.Errors.process(Errors.java:315)

      at org.glassfish.jersey.internal.Errors.process(Errors.java:297)

      at org.glassfish.jersey.internal.Errors.process(Errors.java:267)

      at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)

      at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)

      at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)

      at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)

      at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)

      at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)

      at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)

      at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)

      at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)

      at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.jfrog.access.filter.UsernameAttributeFilter.doFilterInternal(UsernameAttributeFilter.java:35)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.jfrog.access.filter.VersionFilter.doFilterInternal(VersionFilter.java:25)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.jfrog.access.filter.RequestLoggingFilter.doFilterInternal(RequestLoggingFilter.java:45)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

      at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)

      at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)

      at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

      at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:115)

      at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:59)

      at org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:90)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:108)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.jfrog.access.filter.LoggerConfigAssignerFilter.doFilterInternal(LoggerConfigAssignerFilter.java:36)

      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)

      at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:467)

      at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:392)

      at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)

      at org.artifactory.webapp.servlet.redirection.AccessProxyRedirectHandler.redirect(AccessProxyRedirectHandler.java:38)

      at org.artifactory.webapp.servlet.ArtifactoryFilter.doFilter(ArtifactoryFilter.java:70)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

      at org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:279)

      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)

      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)

      at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)

      at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

      at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)

      at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)

      at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

      at java.lang.Thread.run(Thread.java:748)

      Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL into ("SYSTEM"."ACCESS_PERMISSIONS_CUSTOM_DATA"."DATA")

       

      at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)

      at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)

      at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)

      at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513)

      at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)

      at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)

      at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)

      at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1046)

      at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1336)

      at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)

      at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3694)

      at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1354)

      at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source)

      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

      at java.lang.reflect.Method.invoke(Method.java:498)

      at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)

      at com.sun.proxy.$Proxy65.executeUpdate(Unknown Source)

      at org.jfrog.storage.JdbcHelper.executeUpdate(JdbcHelper.java:215)

      at org.jfrog.access.server.db.util.AccessJdbcHelperImpl.executeUpdate(AccessJdbcHelperImpl.java:99)

      at org.jfrog.access.server.db.dao.AccessDaoHelper.updatePagination(AccessDaoHelper.java:170)

      at org.jfrog.access.server.db.dao.AccessDaoHelper.paginationCreate(AccessDaoHelper.java:129)

      at org.jfrog.access.server.db.dao.PermissionsCustomDataDao.createCustomData(PermissionsCustomDataDao.java:65)

      at org.jfrog.access.server.db.dao.PermissionsCustomDataDao$$FastClassBySpringCGLIB$$73121754.invoke(<generated>)

      at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)

      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)

      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)

      at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)

      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

      at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)

      at org.jfrog.access.server.db.dao.PermissionsCustomDataDao$$EnhancerBySpringCGLIB$$ed20086b.createCustomData(<generated>)

      at org.jfrog.access.server.service.db.PermissionStorageServiceImpl.createPermissionWithRelatedEntities(PermissionStorageServiceImpl.java:199)

      at org.jfrog.access.server.service.db.PermissionStorageServiceImpl.createPermission(PermissionStorageServiceImpl.java:179)

      ... 149 common frames omitted

       

        Attachments

          Activity

            People

            • Assignee:
              Maximy Maxim Yurkovsky
              Reporter:
              patrickr Patrick Russell
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: