> -----Original Message-----
> From: 
> [email protected]
>  
> [mailto:[email protected]
> illa.org] On Behalf Of Markus Moeller
> Sent: Tuesday, April 14, 2009 3:35 PM
> To: [email protected]
> Subject: Re: SASL authentication
> 
> What port do you use ?  You need to differentiate between 
> starttls on port
> 389 and ssl on port 636.

Yes, I am using 636. And I understand that if I use port 389 on ssl connection, 
the error "81 Can't contact LDAP server" is expected. But it seems not to be 
the case.

Previously I made a mistake: 
==============================================
static char *sasl_secprops = "maxssf=0"; 
......
  if(sslEnabled)
  {
    if (ldap_set_option(ldapHandle, LDAP_OPT_X_SASL_SECPROPS, (void 
*)sasl_secprops) != 0)
    {
      /*
      ** unbind ldap handle.
      */
      if (ldapHandle != (LDAP *)NULL)
      {
        LOGINFO("ldap_unbind_s3");
        ldap_unbind_s(ldapHandle);
        ldapHandle = (LDAP *)NULL;
      }

      LOGERROR("Failed to set maxssf to 0");
      return(ABA_LDAP_SET_UNABLE_TO_SET_PREFS);
    }

    if ( (ldapHandle = ldapssl_init(serverHost,
                                               serverPort, 1 )) == NULL)
    {
      LOGERROR("Failed to do ldapssl_init...");
      return(ABA_LDAP_INIT_CALL_FAILED);
    }

    LOGINFO("LDAP SSL CONNECTION SUCCESSFUL to %s",
               ldapServerConfigData.hostnames);
  }
......
  ldapStatus = ldap_sasl_interactive_bind_ext_s(ldapHandle, "", sasl_mech,
                                                                      NULL, 
NULL, sasl_flags,
                                                                      
example_sasl_interact, NULL, &responseControls);
==============================================
As you can see, I set the option's value before the handle is created. That is 
ridiculous.

It has been corrected as: 
==============================================
static char *sasl_secprops = "maxssf=0"; 
......
  if(sslEnabled)
  {
    if ( (ldapHandle = ldapssl_init(serverHost,
                                               serverPort, 1 )) == NULL)
    {
      LOGERROR("Failed to do ldapssl_init...");
      return(ABA_LDAP_INIT_CALL_FAILED);
    }

    LOGINFO("LDAP SSL CONNECTION SUCCESSFUL to %s",
               ldapServerConfigData.hostnames);

    if (ldap_set_option(ldapHandle, LDAP_OPT_X_SASL_SECPROPS, (void 
*)sasl_secprops) != 0)
    {
      /*
      ** unbind ldap handle.
      */
      if (ldapHandle != (LDAP *)NULL)
      {
        LOGINFO("ldap_unbind_s3");
        ldap_unbind_s(ldapHandle);
        ldapHandle = (LDAP *)NULL;
      }

      LOGERROR("Failed to set maxssf to 0");
      return(ABA_LDAP_SET_UNABLE_TO_SET_PREFS);
    }
  }
......
  ldapStatus = ldap_sasl_interactive_bind_ext_s(ldapHandle, "", sasl_mech,
                                                                      NULL, 
NULL, sasl_flags,
                                                                      
example_sasl_interact, NULL, &responseControls);
==============================================
The change is just to swap the locations of ldapssl_init() and 
ldap_set_option(). 

To my dismay, I still get the error "81 Can't contact LDAP server": 
==============================================
<apManager> (Tue Apr 14 2009 17:02:08.484) 
<p11077,t3079416736,aba_ldap_interface.c,1453>
     INFO>> serverHost is [13.198.98.35]
<apManager> (Tue Apr 14 2009 17:02:08.484) 
<p11077,t3079416736,aba_ldap_interface.c,1454>
     INFO>> serverPort is [636]
......
<apManager> (Tue Apr 14 2009 17:02:08.902) 
<p11077,t3079416736,aba_ldap_interface.c,1664>
     INFO>> SASL LDAP BIND with GSSAPI: Value of ldapStatus 0
<apManager> (Tue Apr 14 2009 17:02:08.902) 
<p11077,t3079416736,aba_ldap_interface.c,1727>
     INFO>> ldap_unbind_s6
......
<apManager> (Tue Apr 14 2009 17:02:08.910) 
<p11077,t3079416736,aba_ldap_interface.c,1650>
     INFO>> SASL Login
<apManager> (Tue Apr 14 2009 17:02:08.916) 
<p11077,t3079416736,aba_ldap_interface.c,1664>
     INFO>> SASL LDAP BIND with GSSAPI: Value of ldapStatus 81
<apManager> (Tue Apr 14 2009 17:02:08.916) 
<p11077,t3079416736,aba_ldap_interface.c,1671>
    ERROR>> LDAP BIND: Value of ldap failure status and text 81 Can't contact 
LDAP server
==============================================
The same pattern can repeat many times. I am really confused why the first 
binding is successful, while the second fails. And then the 3rd succeeds, while 
the 4th fails. Hmmm, I have a feeling that the core part has nothing wrong. 
Maybe something is not quite right in the caller (in the module "apManager") of 
LDAP interface. 

I will look into the code more carefully, and keep you posted.

Thanks,
Xu Qiang
_______________________________________________
dev-tech-ldap mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-ldap

Reply via email to