Tobias Bocanegra created OAK-2897:
-------------------------------------
Summary: CLONE - Make LDAP connection pool 'testOnBorrow'
configurable
Key: OAK-2897
URL: https://issues.apache.org/jira/browse/OAK-2897
Project: Jackrabbit Oak
Issue Type: Improvement
Components: auth-ldap
Affects Versions: 1.2
Reporter: Tobias Bocanegra
Assignee: Tobias Bocanegra
Priority: Minor
Fix For: 1.3.0, 1.0.14, 1.2.3
Depending of the LDAP server configuration, it fails to connect as the server
doesn't allow the connection validation query.
It fails on
{quote}
Caused by: java.util.NoSuchElementException: Could not create a validated
object, cause: ValidateObject failed
at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1233)
at
org.apache.directory.ldap.client.api.LdapConnectionPool.getConnection(LdapConnectionPool.java:56)
at
org.apache.jackrabbit.oak.security.authentication.ldap.impl.LdapIdentityProvider.connect(LdapIdentityProvider.java:532)
... 92 common frames omitted
{quote}
Based on customer analyze of Oak code this is the reason it fails:
{quote}
I think I have found a solution for the problem. While the system is
initializing the connection it tries to validate the connection. This is the
reason for the strange search request:
SearchRequest
baseDn : ''
filter : '(objectClass=*)'
scope : base object
Because such kind of requests are not allowed in the client's ldap system the
connection is being rejected (as invalid). It is configurable if the connection
should be validated. The class
org.apache.jackrabbit.oak.security.authentication.ldap.impl.LdapIdentityProvider
contains this code
if (config.getAdminPoolConfig().getMaxActive() != 0) {
adminPool = new LdapConnectionPool(adminConnectionFactory);
adminPool.setTestOnBorrow(true);
adminPool.setMaxActive(config.getAdminPoolConfig().getMaxActive());
adminPool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_BLOCK);
}
A solution for our Problem would most probably be to change the connectionPool
configuration adminPool.setTestOnBorrow(false);
This Parameter comes sadly not from the identity provider configuration.
Is there a way to change this this parameter without creating an own
implementation of the identity provider?
{quote}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)