linagora / linshare

LinShare
https://www.linshare.org/
GNU Affero General Public License v3.0
457 stars 85 forks source link

OIDC failure #326

Open scastromx opened 6 days ago

scastromx commented 6 days ago

Have been trying to configure OIDC SSO, when the client calls the authorized end point I am getting an error 500 from the backend.

After enabling the logs at TRACE level I am getting the following exception:

linshare_backend  | [DEBUG]:http-nio-8080-exec-2:20240912.005236:org.springframework.orm.hibernate5.HibernateTemplate:doExecute:Could not retrieve pre-bound Hibernate session
linshare_backend  | org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
linshare_backend  |     at org.springframework.orm.hibernate5.SpringSessionContext.currentSession(SpringSessionContext.java:142) ~[spring-orm-5.3.22.jar:5.3.22]
linshare_backend  |     at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:491) ~[hibernate-core-5.4.30.Final.jar:5.4.30.Final]
linshare_backend  |     at org.springframework.orm.hibernate5.HibernateTemplate.doExecute(HibernateTemplate.java:352) ~[spring-orm-5.3.22.jar:5.3.22]
linshare_backend  |     at org.springframework.orm.hibernate5.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:334) ~[spring-orm-5.3.22.jar:5.3.22]
linshare_backend  |     at org.springframework.orm.hibernate5.HibernateTemplate.findByCriteria(HibernateTemplate.java:815) ~[spring-orm-5.3.22.jar:5.3.22]
linshare_backend  |     at org.springframework.orm.hibernate5.HibernateTemplate.findByCriteria(HibernateTemplate.java:807) ~[spring-orm-5.3.22.jar:5.3.22]
linshare_backend  |     at org.linagora.linshare.core.repository.hibernate.AbstractRepositoryImpl.findByCriteria(AbstractRepositoryImpl.java:186) ~[classes/:6.3.0]
linshare_backend  |     at org.linagora.linshare.core.repository.hibernate.GenericAccountRepositoryImpl.getBatchSystemAccount(GenericAccountRepositoryImpl.java:169) ~[classes/:6.3.0]
linshare_backend  |     at org.linagora.linshare.core.repository.hibernate.AccountRepositoryImpl.getBatchSystemAccount(AccountRepositoryImpl.java:28) ~[classes/:6.3.0]
linshare_backend  |     at org.linagora.linshare.auth.oidc.OidcAuthenticationTokenDetailsFactory.getSystemAccount(OidcAuthenticationTokenDetailsFactory.java:110) ~[classes/:6.3.0]
linshare_backend  |     at org.linagora.linshare.auth.oidc.OidcAuthenticationTokenDetailsFactory.getAuthenticationToken(OidcAuthenticationTokenDetailsFactory.java:78) ~[classes/:6.3.0]
linshare_backend  |     at org.linagora.linshare.auth.oidc.OIdcJwtAuthenticationProvider.authenticate(OIdcJwtAuthenticationProvider.java:82) ~[classes/:6.3.0]
linshare_backend  |     at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:182) ~[spring-security-core-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.access.intercept.AbstractSecurityInterceptor.authenticateIfRequired(AbstractSecurityInterceptor.java:315) ~[spring-security-core-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:203) ~[spring-security-core-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:113) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.linagora.linshare.auth.jwt.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:63) ~[classes/:6.3.0]
linshare_backend  |     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22]
linshare_backend  |     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:166) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22]
linshare_backend  |     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.linagora.linshare.auth.CORSRequestFilter.doFilterInternal(CORSRequestFilter.java:45) ~[classes/:6.3.0]
linshare_backend  |     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22]
linshare_backend  |     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.7.2.jar:5.7.2]
linshare_backend  |     at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.22.jar:5.3.22]
linshare_backend  |     at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.22.jar:5.3.22]
linshare_backend  |     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.22.jar:5.3.22]
linshare_backend  |     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar:5.3.22]
linshare_backend  |     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[catalina.jar:9.0.65]
linshare_backend  |     at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-coyote.jar:9.0.65]
linshare_backend  |     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-coyote.jar:9.0.65]
linshare_backend  |     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-coyote.jar:9.0.65]
linshare_backend  |     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-coyote.jar:9.0.65]
linshare_backend  |     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-coyote.jar:9.0.65]
linshare_backend  |     at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-util.jar:9.0.65]
linshare_backend  |     at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-util.jar:9.0.65]
linshare_backend  |     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:9.0.65]
linshare_backend  |     at java.lang.Thread.run(Unknown Source) ~[?:?]
linshare_backend  | [TRACE]:http-nio-8080-exec-2:20240912.005236:org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl:openSession:Opening Hibernate Session.  tenant=null
linshare_backend  | [TRACE]:http-nio-8080-exec-2:20240912.005236:org.hibernate.internal.SessionImpl:<init>:Opened Session [56816daa-9ac1-4f27-a1e4-1a052db63262] at timestamp: 7070115251970048

So it looks that the backend is getting the token authenticated request but it is failing when it tries to create a transaction for database access.

I am using the Docker 6.3 version. Any advice? Backend works properly with username/password and header SSO authentications.

Thanks,

scastromx commented 6 days ago

Let my reply to myself.

Most configure "domain_discriminator".