- changed status to open
unsatisfied dependency exception creating bean 'oauth2Controller' after loading new docker image:latest
Hi, we are using wisemapping in docker env with ldap auth ( microsoft AD). After upgrading to new version we got errors starting container. Seems to related to the new feature with google-oauth: 1:26:43.868 [main] ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'oauth2Controller': Unsatisfied dependency expressed through field 'authManager'; nested exception is org.springframework.beans.factory. ... (more details in log file -> attachment)
Result: wisemapping web site is available, ldap auth works, but nobody can create a new mindmap. (???)
Kind regards Henrik
Comments (9)
-
-
Hi,
I’m facing the same issue on a new deployement. Can you tell me what is the last version that is known to work with LDAP auth ?
Best Regards
-
Issue
#17was marked as a duplicate of this issue. -
i have the same problem with the spring bean. i configured an LDAP instance which is working correctly, and WiseMapping does not work with it. I already had a look in the java files in /opt/wisemapping/wise-webapp/src/main/java/com/wisemapping/rest and messed with annotations, but with no luck. might have to do sth with https://stackoverflow.com/questions/41511511/unsatisfieddependencyexception-error-creating-bean-with-name
-
some additional info: when i change app properties from
security.type=ldap
to usesecurity.type=db
then i can register new users and the logins performs, but there is no redirect to the mapping view to edit sth. i can reset password for registered users too. So it seems the auth Handler is defect generally. When usingsecurity.type=db
there is no JavaException in the logs. Generally, the logs do not trigger any error when logging it -
btw this is our instance → https://wisemapping.stadtfabrikanten.org/c/registration (atm i changed from ldap to db, but either it does not work)
this runs on Ubuntu 20, amd64 platform, PostgreSQL database jdbc driver, LDAPS (tls), tomcat 10, NOT dockerized, but compiled directly from source, with compability mode for javax <> jakarta
-
It must have to do sth with bean configuration in XML files, like the change in file was done in https://bitbucket.org/wisemapping/wisemapping-open-source/commits/34b00a8a7f917f3d14c37721e56d73a72061957b, provided by issue https://bitbucket.org/wisemapping/wisemapping-open-source/issues/9/problems-with-ad-authentication
I dont know how the config has to look alike
vim /opt/apache-tomcat-10.1.11/webapps/wisemapping/WEB-INF/wisemapping-security-ldap.xml
i guess we need to add sth. like
<bean id="OAuth2Controller" class="com.wisemapping.security.AuthenticationProvider" factory-method="authenticate"/>
… which does not work. I dont understands the concepts, because i am not a java/spring developer at all
btw you dont need a running ldap server to compile and run WiseMapping, to see the errors belonging to the auth handler. You just need to swith to
security.type=ldap
in app.properties.I also tried to check out what happens when removing Google stuff completely, but without major success. When removing the files …
rm /opt/wisemapping/wise-webapp/src/main/java/com/wisemapping/security/GoogleAuthenticationProvider.java rm /opt/wisemapping/wise-webapp/src/main/java/com/wisemapping/rest/OAuth2Controller.java
and compiling again + starting tomcat, the catalina output is:
11:12:39.717 [main] ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'authManager'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.authentication.AuthenticationManager' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier("authenticationManager"), @org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:660) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:920) ~[spring-context-5.3.28.jar:5.3.28] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.28.jar:5.3.28] at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:702) ~[spring-webmvc-5.3.28.jar:5.3.28] at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:668) ~[spring-webmvc-5.3.28.jar:5.3.28] at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:716) ~[spring-webmvc-5.3.28.jar:5.3.28] at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:591) ~[spring-webmvc-5.3.28.jar:5.3.28] at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:530) [spring-webmvc-5.3.28.jar:5.3.28] at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:170) [spring-webmvc-5.3.28.jar:5.3.28] at jakarta.servlet.GenericServlet.init(GenericServlet.java:143) [servlet-api.jar:6.0] at jakarta.servlet.http.HttpServlet.init(HttpServlet.java:121) [servlet-api.jar:6.0] at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:944) [catalina.jar:10.1.11] at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:901) [catalina.jar:10.1.11] at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:805) [catalina.jar:10.1.11] at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4637) [catalina.jar:10.1.11] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4930) [catalina.jar:10.1.11] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:10.1.11] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683) [catalina.jar:10.1.11] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658) [catalina.jar:10.1.11] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:713) [catalina.jar:10.1.11] at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:975) [catalina.jar:10.1.11] at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1949) [catalina.jar:10.1.11] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:10.1.11] at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123) [?:?] at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:776) [catalina.jar:10.1.11] at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426) [catalina.jar:10.1.11] at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1656) [catalina.jar:10.1.11] at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309) [catalina.jar:10.1.11] at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) [catalina.jar:10.1.11] at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) [catalina.jar:10.1.11] at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366) [catalina.jar:10.1.11] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:893) [catalina.jar:10.1.11] at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:846) [catalina.jar:10.1.11] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:10.1.11] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1328) [catalina.jar:10.1.11] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1318) [catalina.jar:10.1.11] at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:10.1.11] at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) [?:?] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866) [catalina.jar:10.1.11] at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:241) [catalina.jar:10.1.11] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:10.1.11] at org.apache.catalina.core.StandardService.startInternal(StandardService.java:428) [catalina.jar:10.1.11] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:10.1.11] at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:918) [catalina.jar:10.1.11] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:10.1.11] at org.apache.catalina.startup.Catalina.start(Catalina.java:795) [catalina.jar:10.1.11] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347) [bootstrap.jar:10.1.11] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478) [bootstrap.jar:10.1.11] Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.authentication.AuthenticationManager' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier("authenticationManager"), @org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1801) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1357) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.28.jar:5.3.28] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) ~[spring-beans-5.3.28.jar:5.3.28] ... 65 more
it would be still cool to know how i get WiseMapping running with the recent develop or master branch. i checked out different version but was not able to get one working. If LDAP is not avail at the moment id like to use it wit regular registrations, but even this is not working at all. and the log is empty, while i configured log4j to log out everything at DEBUG level:
/opt/apache-tomcat-10.1.11/webapps/wisemapping/WEB-INF/classes/log4j.properties
# Log levels log4j.rootLogger=DEBUG, stdout log4j.logger.com.wisemapping=DEBUG log4j.logger.org.springframework=DEBUG log4j.logger.org.hibernate=DEBUG log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE log4j.logger.org.hibernate.SQL=DEBUG # Stdout logger log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p %c - %m%n # File Writer Logger #log4j.appender.R=org.apache.log4j.RollingFileAppender #log4j.appender.R.File=wisemapping.log #log4j.appender.R.MaxFileSize=100KB # Keep one backup file #log4j.appender.R.MaxBackupIndex=1 #log4j.appender.R.layout=org.apache.log4j.PatternLayout #log4j.appender.R.layout.ConversionPattern=%d %p %c - %m%n
/opt/apache-tomcat-10.1.11/webapps/wisemapping/WEB-INF/classes/log4j-stdout.properties
# Debug level log4j.rootLogger=DEBUG,stdout # Stdout logger log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p %c - %m%n
-
at least i was able to build the project with JDK 17 now; Maven was too old. I update from 3.6.3 to 3.9.3
-
i changed to Jetty11 and checked out https://bitbucket.org/wisemapping/wisemapping-open-source/commits/53173ec75d0799c5d2eec97c05055b731996ad47 but now i get
- i installed jetty 11.0.15 to /opt/
- adjusted
/opt/jetty-home-11.0.15/jetty-base/start.d/deploy.ini
to include jsp module “--module=deploy,jsp
“ - added two missing dependencies in
/opt/wisemapping/wise-webapp/pom.xml
<dependency> <groupId>org.glassfish.web</groupId> <artifactId>jakarta.servlet.jsp.jstl</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>jakarta.servlet.jsp.jstl</groupId> <artifactId>jakarta.servlet.jsp.jstl-api</artifactId> <version>3.0.0</version> </dependency>
- adjusted app.properties
- checked out the lastest commit and built
- deployed the war file to webapps directory
- adjusted nginx reverse proxy
- ran the server …
is there any chance to get this running? i dont want to use docker at all and the docker image is outdated in terms of used tomcat version.
- Log in to comment
LDAP has not been tested in the latest releases. There must be a regresion introduced.