Auth token null during Test Connection / Aggregation for custom Webservice connector

Which IIQ version are you inquiring about?

Sailpoint iiq 8.4p1

Please share any images or screenshots, if relevant.

Please share any other relevant files that may be required

sailpoint.connector.ConnectorException: Exception occurred in Test Connection.Url: https://mstrdataverseprd.lowes.com/MicroStrategyLibrarySTD/api/reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances, Message: 401 : Unauthorized, HTTP Error Code: 401
at sailpoint.connector.webservices.v2.WebServiceFacadeV2.testConnection(WebServiceFacadeV2.java:504)
at sailpoint.connector.webservices.WebServicesConnector.testConfiguration(WebServicesConnector.java:91)
at sailpoint.connector.ConnectorProxy.testConfiguration(ConnectorProxy.java:411)
at sailpoint.web.ApplicationObjectBean.testConnectorAction(ApplicationObjectBean.java:2857)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.el.parser.AstValue.invoke(AstValue.java:241)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:229)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at sailpoint.web.util.SailPointActionListener.processAction(SailPointActionListener.java:42)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)
at sailpoint.web.MyFacesExtensionsFilter.doFilter(MyFacesExtensionsFilter.java:62)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at sailpoint.web.SailPointResponseFilter.doFilter(SailPointResponseFilter.java:100)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at sailpoint.web.PageAuthorizationFilter.doFilter(PageAuthorizationFilter.java:102)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at sailpoint.web.PageAuthenticationFilter$Chainlink.doFilter(PageAuthenticationFilter.java:290)
at sailpoint.service.PageAuthenticationService.handleFinally(PageAuthenticationService.java:644)
at sailpoint.web.PageAuthenticationFilter$MyHandler.handle(PageAuthenticationFilter.java:333)
at sailpoint.web.PageAuthenticationFilter.doFilter(PageAuthenticationFilter.java:127)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at sailpoint.web.SailPointContextRequestFilter.doFilter(SailPointContextRequestFilter.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at sailpoint.web.util.MethodFilter.doFilter(MethodFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at sailpoint.web.SailPointPollingRequestFilter.doFilter(SailPointPollingRequestFilter.java:151)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at sailpoint.web.util.TimingFilter.doFilter(TimingFilter.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at sailpoint.web.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:607)
at org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:185)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:656)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1826)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:829)

example, logs).

Share all details about your problem, including any error messages you may have received.

Check if the same configuration is working in POSTMAN or not?

Yes, I tested the same configuration in Postman and it is working correctly. The request returns the expected response there.

Hi @Vijayk1989 ,

Use Bearer in front of $application.accesstoken$. And also use before operation rule, to check whether access token is getting or not.

Thank you,

Harikrishna

401 error generally means unauthorized . The error clearly says that bearer token is missing in header , which is why it’s throwing the error. Please fix it, and then do a test connection, it should work

@Vijayk1989 Please add a before rule in test connection end point, and print the requestEndPoint. This will print the url, headers, body and params, operation. Please validate if it is as expected or not. Compare it with Postman endpoint.

I tried to print the response attribute and looks like I am getting null value, but the getting the expected response code as 204

Please find the below screen shot for the same

This seems to be an After Rule.. Can you please add it in Before Rule?

I added the rule in the before rule section, still the required header is coming as null

before rule:
log.error("Header value (token): ================================> " + application.getAttributeValue(“access_token”));

Please find the below screenshot for the same

don’t print header.. directly print requestEndpoint.

[quote="Neelmadhav Panda I am able to capture the loggers as
suggested

Please find the below loggers:

2026-03-19T16:47:54,575 ERROR https-jsse-nio-12001-exec-4 connector.webservices.v2.RequestOrchestratorV2:166 - requestEndPoint object :::: EndPoint [_afterRule=null, _beforeRule=DART Test, _contextUrl=/reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances, _fullUrl=https://mstrdataverseprd.lowes.com/MicroStrategyLibrarySTD/api/reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances, _httpMethodType=POST, _operationType=Test Connection, _rootPath=null, _uniqueNameForEndPoint=Test Connection, paginationSteps=null, pagingInitialOffset=0, pagingSize=50, _resMappingObj={}, _header={Accept=application/json, X-MSTR-AuthToken=Bearer, X-MSTR-ProjectID=21A1877611EAAAB7F2660080EF352CC2, Content-Type=application/json}, _body={bodyFormat=raw}, _responseCode=null, _sequenceNumberForEndpoint=2, xpathNamespaces={}, possibleHttpErrors={}]
2026-03-19T16:47:54,581 ERROR https-jsse-nio-12001-exec-4 connector.webservices.v2.RequestOrchestratorV2:166 - requestEndPoint URL ::: https://mstrdataverseprd.lowes.com/MicroStrategyLibrarySTD/api/reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances
2026-03-19T16:47:54,585 ERROR https-jsse-nio-12001-exec-4 connector.webservices.v2.RequestOrchestratorV2:166 - body :::: {jsonBody=null, bodyFormat=raw}
2026-03-19T16:47:54,590 ERROR https-jsse-nio-12001-exec-4 connector.webservices.v2.RequestOrchestratorV2:166 - jsonBody :::: null
2026-03-19T16:47:54,594 ERROR https-jsse-nio-12001-exec-4 connector.webservices.v2.RequestOrchestratorV2:166 - header :::: {Accept=application/json, X-MSTR-ProjectID=21A1877611EAAAB7F2660080EF352CC2, X-MSTR-AuthToken=Bearer, Content-Type=application/json}
2026-03-19T16:47:54,599 WARN https-jsse-nio-12001-exec-4 connector.webservices.v2.RequestOrchestratorV2:614 - Before operation rule returned invalid information for endpoint: Test Connection
2026-03-19T16:47:54,599 DEBUG https-jsse-nio-12001-exec-4 connector.sdk.webservices.ExecutionMediator:609 - processEndpoint: Attempting to trigger request for endpoint ‘Test Connection’ at: /reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances
2026-03-19T16:47:54,599 DEBUG https-jsse-nio-12001-exec-4 connector.sdk.webservices.ExecutionMediator:613 - ==> Dumping request for troubleshooting purposes: HttpRequestWrapper [url=
/reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances, headers={Accept=application/json, X-MSTR-ProjectID=21A1877611EAAAB7F2660080EF352CC2, X-MSTR-AuthToken=Bearer, Content-Type=application/json}, payload=null, type=POST, allowedSuccessCodes=[2**], possibleHttpErrorCodes=, possibleHttpErrorMessages=]
2026-03-19T16:47:54,599 DEBUG https-jsse-nio-12001-exec-4 connector.common.http.HttpUtils:129 - After decoding: Original value is ‘/reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances’ and decoded value is '/reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances’
2026-03-19T16:47:54,599 DEBUG https-jsse-nio-12001-exec-4 connector.common.http.HttpUtils:169 - After encoding: Original URL is ‘/reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances’ and final URL is '/reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances’
2026-03-19T16:47:54,599 TRACE https-jsse-nio-12001-exec-4 http.client.impl.ApacheHttpClientWrapper:278 - Entering execute: Arguments => *****/reports/054B02E9A34F283CFAF36EAE59B9D1D9/instances
2026-03-19T16:47:54,599 TRACE https-jsse-nio-12001-exec-4 http.client.impl.ApacheHttpClientWrapper:651 - Entering prepareHeaders: Arguments => N/A
2026-03-19T16:47:54,599 TRACE https-jsse-nio-12001-exec-4 http.client.impl.ApacheHttpClientWrapper:663 - Exiting prepareHeaders: Arguments => N/A, Returns => [Accept, X-MSTR-ProjectID, X-MSTR-AuthToken, Content-Type]
2026-03-19T16:47:54,599 TRACE https-jsse-nio-12001-exec-4 http.client.impl.ApacheHttpClientWrapper:632 - Entering setupCookies: Arguments => N/A
2026-03-19T16:47:54,599 TRACE https-jsse-nio-12001-exec-4 http.client.impl.ApacheHttpClientWrapper:593 - Entering getCookies: Arguments => N/A
2026-03-19T16:47:54,599 TRACE https-jsse-nio-12001-exec-4 http.client.impl.ApacheHttpClientWrapper:606 - Exiting getCookies: Arguments => N/A, Returns => Cookie size 4
2026-03-19T16:47:54,599 TRACE https-jsse-nio-12001-exec-4 http.client.impl.ApacheHttpClientWrapper:647 - Exiting setupCookies: Arguments => N/A, Returns => N/A

what’s the authentication mode? are you setting X-MSTR-AuthToken? I have pinged you over chat to understand it better.

Auth token issue got resolved, auth token is coming with the part of the header and not with the part of response body, so I written a after rule to capture the header, which resolved the issue of capturing the auth token value

@Vijayk1989 Please accept your response as the solution to help other sailors facing a similar issue.