Hi Team,
We are working on migration of nsldap C sdk to OpenLDAP C sdk for our
application client code.
We are using OpenLDAP 2.6.7.
As part of this migration, we are facing one issue related to LDAP
Referrals when LDAP_OPT_REFERRALS=ON (which means SDK will handle Referrals
internally)
While testing our application which makes use of OpenLDAP sdk , we see a
difference in the referral handling when LDAP_OPT_REFERRALS=ON when
compared with NSLDAP C SDK with user bind
We are testing with Oracle Unified Directory, referrals is enabled at
server.
*With OpenLDAP C SDK:*
When our application follows the bind(synchronous) request for the users
which is present in another server (where chase should happen)
ldap_bind_s →
- Which internally calls ldap_sasl_bind_s → ldap_sasl_bind +
ldap_result
able to succeed the bind (LDAP_SUCCESS).
And When our application follows the bind(asynchronous) request for the
users which is present in another server (where chase should happen)
ldap_simple_bind ->
- which internally calls ldap_sasl_bind
failed to bind and returned (LDAP_REFERRAL) instead.
On further analysis of OpenLDAP code *result.c* (line# 728) we observed,
there is exclusion for bind request *tag != LDAP_RES_BIND*, which is
preventing to chase the referral internally.
* /* Do we need to check for referrals? */ if ( tag !=
LDAP_RES_BIND && ( LDAP_BOOL_GET(&ld->ld_options,
LDAP_BOOL_REFERRALS) || lr->lr_parent != NULL ))
{ char **refs = NULL; ber_len_t
len; /* Check if V3 referral */ if (
ber_peek_tag( &tmpber, &len ) == LDAP_TAG_REFERRAL ) {
... /* Chase the referral */
refer_cnt = ldap_chase_v3referrals( ld, lr, refs, ... );*
However, we don't see such exclusion with NSLDAP C SDK specifically for
bind requests. We would like to understand the limitation for asynchronous
bind when handling referral internally.
Are there any known issues/limitations with this use case when OpenLDAP C
SDK handles referrals?
Is there any way (like any flag/option) to make automatic referrals work
with asynchronous bind calls ldap_simple_bind?
Please note that, the ldap_search succeeds with when LDAP_OPT_REFERRALS=ON,
no issue observed.