[ 
https://issues.apache.org/jira/browse/CAMEL-17234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17449428#comment-17449428
 ] 

Adam Ostrožlík edited comment on CAMEL-17234 at 11/26/21, 7:42 AM:
-------------------------------------------------------------------

I have tried hardcoded version:
{code:java}
.to("ldap:gateLdapDirContext?base=dc=cpost,dc=cz") {code}
Exception is still the same but I can now see no escaping of '=' sign:
{code:java}
[route2            ] [to10              ] 
[ldap:gateLdapDirContext?base=dc=cpost,dc=cz                                   
] [         0] {code}
So it looks like EndpointDsl thing with that character escaping but it may not 
be the cause.

I am using docker container:
{code:java}
openldap:
  image: osixia/openldap:${OPENLDAP_TAG}
  ports:
    - ${OPENLDAP_PORT_1}:${OPENLDAP_PORT_1}
    - ${OPENLDAP_PORT_2}:${OPENLDAP_PORT_2}
  env_file: .env.openldap
  volumes:
    - "OpenLDAPData:/var/lib/ldap:rw"
    - "OpenLDAPConfigs:/etc/ldap/slapd.d:rw" {code}
{code:java}
# .env.openldap
LDAP_ORGANISATION="Česká pošta"
LDAP_DOMAIN=cpost.cz
LDAP_ADMIN_PASSWORD=password

# .env
OPENLDAP_TAG=latest
OPENLDAP_PORT_1=389
OPENLDAP_PORT_2=636{code}
DirContext:
{code:java}
@Bean
DirContext gateLdapDirContext(GateProperties gateProperties) {
  var ldapConfig = gateProperties.getLdap();
  return new InitialLdapContext(new Hashtable<>(Map.of(
      Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory",
      Context.PROVIDER_URL, ldapConfig.getProviderUrl(),
      Context.URL_PKG_PREFIXES, "com.sun.jndi.url",
      Context.REFERRAL, "ignore",
      Context.SECURITY_AUTHENTICATION, "simple",
      Context.SECURITY_PRINCIPAL, ldapConfig.getPrincipalDn(),
      Context.SECURITY_CREDENTIALS, ldapConfig.getPassword()
  )), null);
} {code}
Full properties:
{code:java}
gate:
  ldap:
    provider-url: ldap://localhost:389
    base-dn: dc=cpost,dc=cz
    principal-dn: cn=admin,${gate.ldap.base-dn}
    password: password {code}
 

 
 
 
 

 


was (Author: drezir):
I have tried hardcoded version:
{code:java}
.to("ldap:gateLdapDirContext?base=dc=cpost,dc=cz") {code}
Exception is still the same but I can now see no king of escaping '=' sign:
{code:java}
[route2            ] [to10              ] 
[ldap:gateLdapDirContext?base=dc=cpost,dc=cz                                   
] [         0] {code}
So it looks like EndpointDsl thing with that character escaping but it may not 
be the cause.

I am using docker container:
{code:java}
openldap:
  image: osixia/openldap:${OPENLDAP_TAG}
  ports:
    - ${OPENLDAP_PORT_1}:${OPENLDAP_PORT_1}
    - ${OPENLDAP_PORT_2}:${OPENLDAP_PORT_2}
  env_file: .env.openldap
  volumes:
    - "OpenLDAPData:/var/lib/ldap:rw"
    - "OpenLDAPConfigs:/etc/ldap/slapd.d:rw" {code}
{code:java}
# .env.openldap
LDAP_ORGANISATION="Česká pošta"
LDAP_DOMAIN=cpost.cz
LDAP_ADMIN_PASSWORD=password

# .env
OPENLDAP_TAG=latest
OPENLDAP_PORT_1=389
OPENLDAP_PORT_2=636{code}
DirContext:
{code:java}
@Bean
DirContext gateLdapDirContext(GateProperties gateProperties) {
  var ldapConfig = gateProperties.getLdap();
  return new InitialLdapContext(new Hashtable<>(Map.of(
      Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory",
      Context.PROVIDER_URL, ldapConfig.getProviderUrl(),
      Context.URL_PKG_PREFIXES, "com.sun.jndi.url",
      Context.REFERRAL, "ignore",
      Context.SECURITY_AUTHENTICATION, "simple",
      Context.SECURITY_PRINCIPAL, ldapConfig.getPrincipalDn(),
      Context.SECURITY_CREDENTIALS, ldapConfig.getPassword()
  )), null);
} {code}
Full properties:
{code:java}
gate:
  ldap:
    provider-url: ldap://localhost:389
    base-dn: dc=cpost,dc=cz
    principal-dn: cn=admin,${gate.ldap.base-dn}
    password: password {code}
 

 

> camel-ldap - LDAP bad parsing of '=' in base parameter
> ------------------------------------------------------
>
>                 Key: CAMEL-17234
>                 URL: https://issues.apache.org/jira/browse/CAMEL-17234
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-ldap
>    Affects Versions: 3.12.0
>            Reporter: Adam Ostrožlík
>            Priority: Major
>             Fix For: 3.14.0
>
>
> Simple route for ldap search:
> {code:java}
> // main route
> .wireTap(securityEndpoint)
> from(securityEndpoint)
>    
> .to(ldap("gateLdapDirContext").base(gateProperties.getLdap().getBaseDn()));{code}
> application.yaml encoded in UTF-8
> {code:java}
> gate:
>   ldap:
>     base-dn: dc=cpost,dc=cz{code}
> Exception
> {code:java}
> Message History (complete message history is disabled)
> ---------------------------------------------------------------------------------------------------------------------------------------
> RouteId              ProcessorId          Processor                           
>                                              Elapsed (ms)
> [gateMainRoute     ] [gateMainRoute     ] 
> [from[direct://gateRouteEntryEndpoint]                                        
>  ] [         5]
>     ...
> [route1            ] [to4               ] 
> [ldap://gateLdapDirContext?base=dc%3Dcpost%2Cdc%3Dcz                          
>  ] [         0]Stacktrace
> ---------------------------------------------------------------------------------------------------------------------------------------
> javax.naming.directory.InvalidSearchFilterException: Missing 'equals'
>     at 
> java.naming/com.sun.jndi.ldap.Filter.encodeSimpleFilter(Filter.java:312) 
> ~[na:na]
>     at java.naming/com.sun.jndi.ldap.Filter.encodeFilter(Filter.java:171) 
> ~[na:na]
>     at 
> java.naming/com.sun.jndi.ldap.Filter.encodeFilterString(Filter.java:74) 
> ~[na:na]
>     at java.naming/com.sun.jndi.ldap.LdapClient.search(LdapClient.java:547) 
> ~[na:na]
>     at java.naming/com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:2014) 
> ~[na:na]
>     at java.naming/com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1873) 
> ~[na:na]
>     at java.naming/com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1798) 
> ~[na:na]
>     at 
> java.naming/com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:392)
>  ~[na:na]
>     at 
> java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358)
>  ~[na:na]
>     at 
> java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:341)
>  ~[na:na]
>     at 
> java.naming/javax.naming.directory.InitialDirContext.search(InitialDirContext.java:296)
>  ~[na:na]
>     at 
> org.apache.camel.component.ldap.LdapProducer.simpleSearch(LdapProducer.java:125)
>  ~[camel-ldap-3.12.0.jar:3.12.0]
>     at 
> org.apache.camel.component.ldap.LdapProducer.process(LdapProducer.java:79) 
> ~[camel-ldap-3.12.0.jar:3.12.0]
>     at 
> org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:66)
>  ~[camel-support-3.12.0.jar:3.12.0]
>     at 
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:172) 
> ~[camel-core-processor-3.12.0.jar:3.12.0]
>     at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:469)
>  ~[camel-core-processor-3.12.0.jar:3.12.0]
>     at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:179)
>  ~[camel-base-engine-3.12.0.jar:3.12.0]
>     at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
>  ~[camel-base-engine-3.12.0.jar:3.12.0]
>     at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:216)
>  ~[camel-core-processor-3.12.0.jar:3.12.0]
>     at 
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:399)
>  ~[camel-base-engine-3.12.0.jar:3.12.0]
>     at 
> org.apache.camel.processor.WireTapProcessor$WireTapTask.run(WireTapProcessor.java:126)
>  ~[camel-core-processor-3.12.0.jar:3.12.0]
>     at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
>  ~[na:na]
>     at 
> java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) 
> ~[na:na]
>     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) ~[na:na]
>     at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
>  ~[na:na]
>     at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
>  ~[na:na]
>     at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na] {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to