After upgrading to Spectrum 20.2.3, the integration with CABI JasperReports stopped working.
The following error is generated:
org.springframework.security.authentication.BadCredentialsException: Repository User Not Found with user name=[email protected] and tenant id=spectrum
The Enable SSO option is enabled and used to work fine before the upgrade.
Type Exception Report
Message Error during synchronization
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.springframework.security.authentication.AuthenticationServiceException: Error during synchronization com.jaspersoft.jasperserver.api.security.externalAuth.ExternalDataSynchronizerImpl.synchronize(ExternalDataSynchronizerImpl.java:106) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) com.sun.proxy.$Proxy115.synchronize(Unknown Source) com.ca.bicoe.cajasperserver.preauth.sso.authentication.ProxyAuthenticationFilter.onSuccessfulAuthentication(ProxyAuthenticationFilter.java:318) com.ca.bicoe.cajasperserver.preauth.sso.authentication.ProxyAuthenticationFilter.processattemptAuthentication(ProxyAuthenticationFilter.java:248) com.ca.bicoe.cajasperserver.preauth.sso.authentication.ProxyAuthenticationFilter.doFilterext(ProxyAuthenticationFilter.java:218) com.ca.bicoe.cajasperserver.preauth.sso.authentication.ProxyAuthenticationFilter.doFilter(ProxyAuthenticationFilter.java:153) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.multipleTenancy.MTBasicProcessingFilter.doFilter(MTBasicProcessingFilter.java:194) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.war.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:239) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.ji.license.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:103) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.ji.license.JILicenseFilter.doFilter(JILicenseFilter.java:86) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.war.NullFilter.doFilter(NullFilter.java:43) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.ca.bicoe.cajasperserver.preauth.sso.ext.filter.ExternalAuthenticationProxyFilter.doFilter(ExternalAuthenticationProxyFilter.java:83) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.war.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:239) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.api.logging.filter.BasicLoggingFilter.doFilter(BasicLoggingFilter.java:57) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.api.security.WebAppSecurityFilter.doFilter(WebAppSecurityFilter.java:80) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.war.MultipartRequestWrapperFilter.doFilter(MultipartRequestWrapperFilter.java:95) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.war.NullFilter.doFilter(NullFilter.java:43) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.api.security.encryption.EncryptionFilter.doFilter(EncryptionFilter.java:150) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.ca.bicoe.cajasperserver.preauth.sso.filters.BasicRefererBasedCsrfFilter.doFilter(BasicRefererBasedCsrfFilter.java:99) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) com.jaspersoft.jasperserver.war.util.SessionDecoratorFilter.doFilter(SessionDecoratorFilter.java:63) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) com.jaspersoft.jasperserver.war.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:67) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) com.jaspersoft.jasperserver.war.httpheaders.ResourceHTTPHeadersFilter.doFilter(ResourceHTTPHeadersFilter.java:77) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) com.jaspersoft.jasperserver.war.SessionXssNonceSetterFilter.doFilter(SessionXssNonceSetterFilter.java:64) com.jaspersoft.jasperserver.war.P3PFilter.doFilter(P3PFilter.java:43)
Root Cause
org.springframework.security.authentication.BadCredentialsException: Repository User Not Found with user [email protected] and tenant id=spectrum com.ca.bicoe.cajasperserver.preauth.sso.authentication.processors.TenantUserValidationProcessor.processUser(TenantUserValidationProcessor.java:223) com.ca.bicoe.cajasperserver.preauth.sso.authentication.processors.TenantUserValidationProcessor.processTenant(TenantUserValidationProcessor.java:199) com.ca.bicoe.cajasperserver.preauth.sso.authentication.processors.TenantUserValidationProcessor.process(TenantUserValidationProcessor.java:176) com.jaspersoft.jasperserver.api.security.externalAuth.ExternalDataSynchronizerImpl.synchronize(ExternalDataSynchronizerImpl.java:86) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) com.sun.proxy.$Proxy115.synchronize(Unknown Source) com.ca.bicoe.cajasperserver.preauth.sso.authentication.ProxyAuthenticationFilter.onSuccessfulAuthentication(ProxyAuthenticationFilter.java:318) com.ca.bicoe.cajasperserver.preauth.sso.authentication.ProxyAuthenticationFilter.processattemptAuthentication(ProxyAuthenticationFilter.java:248) com.ca.bicoe.cajasperserver.preauth.sso.authentication.ProxyAuthenticationFilter.doFilterext(ProxyAuthenticationFilter.java:218) com.ca.bicoe.cajasperserver.preauth.sso.authentication.ProxyAuthenticationFilter.doFilter(ProxyAuthenticationFilter.java:153) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.multipleTenancy.MTBasicProcessingFilter.doFilter(MTBasicProcessingFilter.java:194) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.war.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:239) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.ji.license.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:103) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.ji.license.JILicenseFilter.doFilter(JILicenseFilter.java:86) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.war.NullFilter.doFilter(NullFilter.java:43) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.ca.bicoe.cajasperserver.preauth.sso.ext.filter.ExternalAuthenticationProxyFilter.doFilter(ExternalAuthenticationProxyFilter.java:83) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.war.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:239) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.api.logging.filter.BasicLoggingFilter.doFilter(BasicLoggingFilter.java:57) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.api.security.WebAppSecurityFilter.doFilter(WebAppSecurityFilter.java:80) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.war.MultipartRequestWrapperFilter.doFilter(MultipartRequestWrapperFilter.java:95) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.war.NullFilter.doFilter(NullFilter.java:43) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.jaspersoft.jasperserver.api.security.encryption.EncryptionFilter.doFilter(EncryptionFilter.java:150) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) com.ca.bicoe.cajasperserver.preauth.sso.filters.BasicRefererBasedCsrfFilter.doFilter(BasicRefererBasedCsrfFilter.java:99) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) com.jaspersoft.jasperserver.war.util.SessionDecoratorFilter.doFilter(SessionDecoratorFilter.java:63) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) com.jaspersoft.jasperserver.war.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:67) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) com.jaspersoft.jasperserver.war.httpheaders.ResourceHTTPHeadersFilter.doFilter(ResourceHTTPHeadersFilter.java:77) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) com.jaspersoft.jasperserver.war.SessionXssNonceSetterFilter.doFilter(SessionXssNonceSetterFilter.java:64) com.jaspersoft.jasperserver.war.P3PFilter.doFilter(P3PFilter.java:43)
Note The full stack trace of the root cause is available in the server logs.
DX NetOps Release : 20.2 or later
Component : Jaspersoft for CA Spectrum
The userSync option is disabled in the Spectrum Report Manager Preferences.
Enable "SRM - Core - Report Manager" module in debug mode to troubleshoot integration issues under:
Spectrum WEB GUI -> Administration -> Debugging -> Web Server Debug Page (Runtime)
This will output debug to the OneClick (Spectrum Tomcat) server log, such as:
Feb 03, 2021 09:15:36.689 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - Jasper SSO is : true
Feb 03, 2021 09:15:36.704 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - Getting Jasper Server Info...
Feb 03, 2021 09:15:36.704 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - Server Info URL:http://JasperHost:8080/jasperserver-pro/rest_v2/serverInfo
Feb 03, 2021 09:15:36.987 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - Jasper Server Info:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><serverInfo><build>20180522_1000</build><dateFormatPattern>yyyy-MM-dd</dateFormatPattern><datetimeFormatPattern>yyyy-MM-dd'T'HH:mm:ss</datetimeFormatPattern><edition>PRO</edition><editionName>Enterprise</editionName><features>AUD MT EXP Fusion AHD DB </features><licenseType>Commercial</licenseType><version>6.4.3</version></serverInfo>
Feb 03, 2021 09:15:37.003 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - Integrated with Jasper Server @JasperHost, Enabled=true
Feb 03, 2021 09:15:37.003 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - Granting MySQL privileges to JasperServer JasperHost
Feb 03, 2021 09:15:37.003 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - MySQL privilege grant operation completed.
Feb 03, 2021 09:15:37.018 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - value of isJasperMultitenancyEnabled--false
Feb 03, 2021 09:16:03.458 (SRM/DeviceModelPoll/updates) - InterfaceAssets: unable to get port list for device doesn't contains interfaces for 0x11dcb0
Feb 03, 2021 09:16:14.057 (SRM/DeviceModelPoll/updates) - InterfaceAssets: unable to get port list for device doesn't contains interfaces for 0x1441fc
Feb 03, 2021 09:16:41.237 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - Integrated with Jasper Server @JasperHost, Enabled=true
Feb 03, 2021 09:16:41.237 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - isJasperEnabled: true isUserSync: false
Feb 03, 2021 09:16:41.237 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - Jasper SSO is ON, Updating key stores
Feb 03, 2021 09:16:41.237 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - Enabling SSO with jasper server...
[B@7326944e
Feb 03, 2021 09:16:41.612 (http-nio-80-exec-7) (RepMgr) - (DEBUG) - Read username [email protected]
This shows that SRM user synchronisation is not enabled.
Enable the UserSync option in the Spectrum Report Manager Preferences:
One of the two options can be performed to trigger the User synchronization: