> -----Original Message-----
> From: [email protected] [mailto:[email protected]] 
> 
> i hate to ask the silly question but do you actually have 
> SASL builtin?
> https://wiki.mozilla.org/LDAP_C_SDK#Building_using_autoconf_.2
> 8preferred_method.29
> see "Build with SASL support" section there. otherwise you 
> might be hitting a stub which does nothing but returns 
> LDAP_SUCCESS [ i have no idea why do we actually return 
> success in those stubs but we do ].

Finally, OS team sent over a new package of MozLDAP library built with SASL 
support. It doesn't return LDAP_SUCCESS any more. However, a new error pops up: 
=========================================
<apManager> (Fri Feb 27 2009 14:14:15.223) 
<p23847,t3079044000,aba_ldap_interface.c,2373>
     INFO>> SASL Login
<apManager> (Fri Feb 27 2009 14:14:15.224) 
<p23847,t3079044000,aba_ldap_interface.c,2388>
     INFO>> SASL LDAP BIND with GSSAPI: Value of ldapStatus 86
<apManager> (Fri Feb 27 2009 14:14:15.224) 
<p23847,t3079044000,aba_ldap_interface.c,2459>
    ERROR>> LDAP BIND: Value of ldap failure status and text 86 Unknown 
authentication method
<apManager> (Fri Feb 27 2009 14:14:15.225) 
<p23847,t3079044000,aba_ldap_interface.c,2500>
    ERROR>> ABA_LDAP_UNKNOWN_BIND_FAILURE
=========================================
In the network trace captured, I didn't see the binding request be sent to the 
server.

The core part of the code is as follows:
=========================================
static int sasl_flags = LDAP_SASL_QUIET; 
static char *sasl_mech = "GSSAPI";

/* warning! - the following requires intimate knowledge of sasl.h */ static 
char *default_values[] = {
    "", /* SASL_CB_USER         0x4001 */
    "", /* SASL_CB_AUTHNAME     0x4002 */
    "", /* SASL_CB_LANGUAGE     0x4003 */ /* not used */
    "", /* SASL_CB_PASS         0x4004 */
    "", /* SASL_CB_ECHOPROMPT   0x4005 */
    "", /* SASL_CB_NOECHOPROMPT 0x4006 */
    "", /* SASL_CB_CNONCE       0x4007 */
    ""  /* SASL_CB_GETREALM     0x4008 */
};

/* this is so we can use SASL_CB_USER etc. to index into default_values */ 
#define VALIDVAL(n) ((n >= SASL_CB_USER) && (n <= SASL_CB_GETREALM)) 
#define VAL(n) default_values[n-0x4001] 
...
static int example_sasl_interact(LDAP *ld, unsigned flags, void *defaults, void 
*prompts) {
        sasl_interact_t         *interact = NULL;

        if (prompts == NULL)
        {
                return (LDAP_PARAM_ERROR);
        }

        for (interact = prompts; interact->id != SASL_CB_LIST_END; interact++)
        {
                if (VALIDVAL(interact->id))
                {
                        interact->result = VAL(interact->id);
                        interact->len = strlen((char *)interact->result);
                }
        }
        return (LDAP_SUCCESS);
}
...
  ldapStatus = ldap_sasl_interactive_bind_ext_s(ldapHandle, "", sasl_mech,
                                                NULL, NULL, sasl_flags,
                                                example_sasl_interact, NULL, 
&responseControls);

  if (responseControls != NULL)
  {
        LOGINFO("SASL binding finished, will destroy responseControls");
        ldap_controls_free(responseControls);
        responseControls = NULL;
  }

  LOGINFO("SASL LDAP BIND with GSSAPI: Value of ldapStatus %d", ldapStatus); 
=========================================
Is it a problem of SASL library? I already have cyrus-sasl-2.1.22 in place.

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

Reply via email to