Now that I can build Flowable (‘build from source’) I would like to configure the all-in-one Docker image to use a directory server (LDAP).
I started by updating the flowable-ui-idm-app’s flowable-default.properties
as follows:
#
# LDAP
#
flowable.idm.ldap.enabled=${FLOWABLE_IDM_LDAP_ENABLED:false}
flowable.idm.ldap.server=${FLOWABLE_IDM_LDAP_SERVER:ldap://localhost}
flowable.idm.ldap.port=${FLOWABLE_IDM_LDAP_PORT:10389}
flowable.idm.ldap.user=${FLOWABLE_IDM_LDAP_USER:cn=admin,dc=flowable,dc=org}
flowable.idm.ldap.password=${FLOWABLE_IDM_LDAP_PASSWORD:secret}
flowable.idm.ldap.base-dn=${FLOWABLE_IDM_LDAP_BASE_DN:dc=flowable,dc=org}
flowable.idm.ldap.user-base-dn=${FLOWABLE_IDM_LDAP_USER_BASE_DN:ou=users,dc=flowable,dc=org}
flowable.idm.ldap.group-base-dn=${FLOWABLE_IDM_LDAP_GROUP_BASE_DN:ou=groups,dc=flowable,dc=org}
flowable.idm.ldap.query.user-by-id=${FLOWABLE_IDM_LDAP_QUERY_USER_BY_ID:(&(objectClass=inetOrgPerson)(uid={0}))}
flowable.idm.ldap.query.user-by-full-name-like=${FLOWABLE_IDM_LDAP_QUERY_USER_BY_FULL_NAME_LIKE:(&(objectClass=inetOrgPerson)(|({0}=*{1}*)({2}=*{3}*)))}
flowable.idm.ldap.query.all-users=${FLOWABLE_IDM_LDAP_QUERY_ALL_USERS:(objectClass=inetOrgPerson)}
flowable.idm.ldap.query.groups-for-user=${FLOWABLE_IDM_LDAP_QUERY_GROUPS_FOR_USER:(&(objectClass=groupOfUniqueNames)(uniqueMember={0}))}
flowable.idm.ldap.query.all-groups=${FLOWABLE_IDM_LDAP_QUERY_ALL_GROUPS:(objectClass=groupOfUniqueNames)}
flowable.idm.ldap.query.group-by-id=${FLOWABLE_IDM_LDAP_QUERY_GROUP_BY_ID:(&(objectClass=groupOfUniqueNames)(uniqueId={0}))}
flowable.idm.ldap.attribute.user-id=${FLOWABLE_IDM_LDAP_ATTRIBUTE_USER_ID:uid}
flowable.idm.ldap.attribute.first-name=${FLOWABLE_IDM_LDAP_ATTRIBUTE_FIRST_NAME:cn}
flowable.idm.ldap.attribute.last-name=${FLOWABLE_IDM_LDAP_ATTRIBUTE_LAST_NAME:sn}
flowable.idm.ldap.attribute.email=${FLOWABLE_IDM_LDAP_ATTRIBUTE_EMAIL:mail}
flowable.idm.ldap.attribute.group-id=${FLOWABLE_IDM_LDAP_ATTRIBUTE_GROUP_ID:cn}
flowable.idm.ldap.attribute.group-name=${FLOWABLE_IDM_LDAP_ATTRIBUTE_GROUP_NAME:cn}
flowable.idm.ldap.cache.group-size=${FLOWABLE_IDM_LDAP_CACHE_GROUP_SIZE:10000}
flowable.idm.ldap.cache.group-expiration=${FLOWABLE_IDM_LDAP_CACHE_GROUP_EXPIRATION:180000}
#
# DEFAULT ADMINISTRATOR ACCOUNT
#
flowable.idm.app.admin.user-id=flowable
flowable.idm.app.admin.password=test
flowable.idm.app.admin.first-name=Flowable
flowable.idm.app.admin.last-name=Administrator
flowable.idm.app.admin.email=admin@flowable.org
The ldap-env.txt
:
FLOWABLE_IDM_LDAP_ENABLED=true
FLOWABLE_IDM_LDAP_SERVER=ldap://localhost
FLOWABLE_IDM_LDAP_PORT=10389
FLOWABLE_IDM_LDAP_USER=cn=admin,dc=flowable,dc=org
FLOWABLE_IDM_LDAP_PASSWORD=secret
FLOWABLE_IDM_LDAP_BASE_DN=dc=flowable,dc=org
FLOWABLE_IDM_LDAP_USER_BASE_DN=ou=users,dc=flowable,dc=org
FLOWABLE_IDM_LDAP_GROUP_BASE_DN=ou=groups,dc=flowable,dc=org
FLOWABLE_IDM_LDAP_QUERY_USER_BY_ID=(&(objectClass=inetOrgPerson)(uid={0}))
FLOWABLE_IDM_LDAP_QUERY_USER_BY_FULL_NAME_LIKE=(&(objectClass=inetOrgPerson)(|({0}=*{1}*)({2}=*{3}*)))
FLOWABLE_IDM_LDAP_QUERY_ALL_USERS=(objectClass=inetOrgPerson)
FLOWABLE_IDM_LDAP_QUERY_GROUPS_FOR_USER=(&(objectClass=groupOfUniqueNames)(uniqueMember={0}))
FLOWABLE_IDM_LDAP_QUERY_ALL_GROUPS=(objectClass=groupOfUniqueNames)
FLOWABLE_IDM_LDAP_QUERY_GROUP_BY_ID=(&(objectClass=groupOfUniqueNames)(uniqueId={0}))
FLOWABLE_IDM_LDAP_ATTRIBUTE_USER_ID=uid
FLOWABLE_IDM_LDAP_ATTRIBUTE_FIRST_NAME=cn
FLOWABLE_IDM_LDAP_ATTRIBUTE_LAST_NAME=sn
FLOWABLE_IDM_LDAP_ATTRIBUTE_EMAIL=mail
FLOWABLE_IDM_LDAP_ATTRIBUTE_GROUP_ID=cn
FLOWABLE_IDM_LDAP_ATTRIBUTE_GROUP_NAME=cn
FLOWABLE_IDM_LDAP_CACHE_GROUP_SIZE=10000
FLOWABLE_IDM_LDAP_CACHE_GROUP_EXPIRATION=180000
To launch OpenLDAP:
docker start --interactive openldap \
-v ~/workspace/Robinyo/serendipity:/serendipity \
-p 10389:389 -p 10636:636 \
--env LDAP_ORGANISATION="flowable" \
--env LDAP_DOMAIN="flowable.org" \
--env LDAP_ADMIN_PASSWORD="secret"
Note: I mount a local directory so that I can use ldapadd
.
flowable.ldif:
# flowable.org
# dn: dc=flowable,dc=org
# objectClass: top
# objectClass: dcObject
# objectClass: organization
# o: flowable
# dc: flowable
# admin, flowable.org
# dn: cn=admin,dc=flowable,dc=org
# objectClass: simpleSecurityObject
# objectClass: organizationalRole
# cn: admin
# description: LDAP administrator
# userPassword:: e1NTSEF9TFFqN05uYzcydWVpcUREUHdxQ0xoMlNwRHB5V2FzaDY=
# Users root
dn: ou=users, dc=flowable,dc=org
ou: users
description: All users in the organisation
objectclass: organizationalUnit
objectClass: extensibleObject
objectClass: top
# Groups root
dn: ou=groups, dc=flowable,dc=org
ou: groups
description: All groups in the organisation
objectclass: organizationalUnit
objectClass: extensibleObject
objectClass: top
# Actual users
dn: cn=Flowable Administrator,ou=users,dc=flowable,dc=org
objectclass: inetOrgPerson
cn: flowable
sn: flowable
uid: flowable
userPassword:: test
To launch my flowable/all-in-one:6.4.1-SNAPSHOT
image:
docker run -p 8080:8080 --env-file ldap-env.txt flowable/all-in-one:6.4.1-SNAPSHOT
When I navigate to Flowable Identity Management: http://localhost:8080/flowable-idm and try to login (user: flowable: password: test) I receive the following error:
2019-01-27 09:14:44.596 INFO 1 --- [nio-8080-exec-2] o.s.w.s.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2019-01-27 09:14:44.628 INFO 1 --- [nio-8080-exec-2] o.s.w.s.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 31 ms
2019-01-27 09:15:16.584 WARN 1 --- [nio-8080-exec-4] o.f.l.LDAPConnectionUtil : Could not create InitialDirContext for LDAP connection : localhost:10389
2019-01-27 09:15:16.584 INFO 1 --- [nio-8080-exec-4] o.f.l.LDAPTemplate : Could not create LDAP connection : Could not create InitialDirContext for LDAP connection : localhost:10389
org.flowable.common.engine.api.FlowableException: Could not create InitialDirContext for LDAP connection : localhost:10389
at org.flowable.ldap.LDAPConnectionUtil.createDirectoryContext(LDAPConnectionUtil.java:57) ~[flowable-ldap-6.4.1-3.jar:6.4.1-3]
at org.flowable.ldap.LDAPConnectionUtil.creatDirectoryContext(LDAPConnectionUtil.java:35) ~[flowable-ldap-6.4.1-3.jar:6.4.1-3]
at org.flowable.ldap.LDAPTemplate.execute(LDAPTemplate.java:38) ~[flowable-ldap-6.4.1-3.jar:6.4.1-3]
at org.flowable.ldap.impl.LDAPUserQueryImpl.findById(LDAPUserQueryImpl.java:92) ~[flowable-ldap-6.4.1-3.jar:6.4.1-3]
at org.flowable.ldap.impl.LDAPUserQueryImpl.executeQuery(LDAPUserQueryImpl.java:60) ~[flowable-ldap-6.4.1-3.jar:6.4.1-3]
at org.flowable.ldap.impl.LDAPUserQueryImpl.executeList(LDAPUserQueryImpl.java:54) ~[flowable-ldap-6.4.1-3.jar:6.4.1-3]
at org.flowable.common.engine.impl.AbstractQuery.executeSingleResult(AbstractQuery.java:161) ~[flowable-engine-common-6.4.1-3.jar:6.4.1-3]
at org.flowable.common.engine.impl.AbstractQuery.singleResult(AbstractQuery.java:106) ~[flowable-engine-common-6.4.1-3.jar:6.4.1-3]
at org.flowable.ui.idm.security.UserDetailsService.loadUserByUsername(UserDetailsService.java:70) ~[flowable-ui-idm-conf-6.4.1-3.jar:6.4.1-3]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) ~[spring-aop-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197) ~[spring-aop-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294) [spring-tx-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) [spring-tx-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) [spring-aop-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) [spring-aop-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at com.sun.proxy.$Proxy214.loadUserByUsername(Unknown Source) [?:?]
at org.springframework.security.authentication.dao.DaoAuthenticationProvider.retrieveUser(DaoAuthenticationProvider.java:104) [spring-security-core-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) [spring-security-core-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:175) [spring-security-core-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:200) [spring-security-core-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter.attemptAuthentication(UsernamePasswordAuthenticationFilter.java:94) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.flowable.ui.idm.web.CustomUsernamePasswordAuthenticationFilter.attemptAuthentication(CustomUsernamePasswordAuthenticationFilter.java:39) [flowable-ui-idm-conf-6.4.1-3.jar:6.4.1-3]
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) [spring-security-web-5.0.11.RELEASE.jar:5.0.11.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.37]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.37]
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.37]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.37]
at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130) [spring-boot-2.0.8.RELEASE.jar:2.0.8.RELEASE]
at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66) [spring-boot-2.0.8.RELEASE.jar:2.0.8.RELEASE]
at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:105) [spring-boot-2.0.8.RELEASE.jar:2.0.8.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:123) [spring-boot-2.0.8.RELEASE.jar:2.0.8.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.37]
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117) [spring-boot-actuator-2.0.8.RELEASE.jar:2.0.8.RELEASE]
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106) [spring-boot-actuator-2.0.8.RELEASE.jar:2.0.8.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.37]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.12.RELEASE.jar:5.0.12.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.37]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [catalina.jar:8.5.37]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:8.5.37]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) [catalina.jar:8.5.37]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [catalina.jar:8.5.37]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [catalina.jar:8.5.37]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) [catalina.jar:8.5.37]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:8.5.37]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [catalina.jar:8.5.37]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) [tomcat-coyote.jar:8.5.37]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:8.5.37]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) [tomcat-coyote.jar:8.5.37]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) [tomcat-coyote.jar:8.5.37]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:8.5.37]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_181]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.5.37]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
Caused by: javax.naming.CommunicationException: localhost:10389
at com.sun.jndi.ldap.Connection.<init>(Connection.java:238) ~[?:1.8.0_181]
at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:137) ~[?:1.8.0_181]
at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1615) ~[?:1.8.0_181]
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2749) ~[?:1.8.0_181]
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:319) ~[?:1.8.0_181]
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192) ~[?:1.8.0_181]
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210) ~[?:1.8.0_181]
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153) ~[?:1.8.0_181]
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83) ~[?:1.8.0_181]
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684) ~[?:1.8.0_181]
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) ~[?:1.8.0_181]
at javax.naming.InitialContext.init(InitialContext.java:244) ~[?:1.8.0_181]
at javax.naming.InitialContext.<init>(InitialContext.java:216) ~[?:1.8.0_181]
at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101) ~[?:1.8.0_181]
at org.flowable.ldap.LDAPConnectionUtil.createDirectoryContext(LDAPConnectionUtil.java:54) ~[flowable-ldap-6.4.1-3.jar:6.4.1-3]
... 89 more
However, I am using the same connection parameters:
as I use to connect to OpenLDAP when using ApacheDS: