2015-08-02 6 views
2

Я пытаюсь подключиться к серверу openLDAP с помощью программы c, я нашел клиентскую библиотеку openLDAP и реализую следующую программу. и я пытаюсь подключиться к серверу ldap this, а также к локальному серверу ldap. я скомпилировать программу без ошибок не используя эту командуошибка протокола клиента openLDAP c (ldap_simple_bind_s: ошибка протокола)

gcc ldapClient.c -o ldapClient -lldap 

и я пытаюсь запустить программу, используя эту команду

./ldapClient euler password 

то говорит

ldap_simple_bind_s: Протокол об ошибке

Я нашел googled и нашел ответ s как this, они говорят, что эта ошибка приходит с матчем версии протокола промаха еями: LDAPv2 и LDAPv3, но я не в состоянии точно, как решить эту проблему

#include <stdio.h> 
#include <ldap.h> 
/* LDAP Server settings */ 
#define LDAP_SERVER "ldap://ldap.forumsys.com:389" 
int 
main(int argc, char **argv) 
{ 
LDAP  *ld; 
int  rc; 
char  bind_dn[100]; 

/* Get username and password */ 
if(argc != 3) 
{ 
perror("invalid args, required: username password"); 
return(1); 
} 
sprintf(bind_dn, "cn=%s,ou=mathematicians,dc=example,dc=com", argv[1]); 
printf("Connecting as %s...\n", bind_dn); 

/* Open LDAP Connection */ 
if(ldap_initialize(&ld, LDAP_SERVER)) 
{ 
perror("ldap_initialize"); 
return(1); 
} 

/* User authentication (bind) */ 
rc = ldap_simple_bind_s(ld, bind_dn, argv[2]); 
if(rc != LDAP_SUCCESS) 
{ 
fprintf(stderr, "ldap_simple_bind_s: %s\n", ldap_err2string(rc)); 
return(1); 
} 
printf("Successful authentication\n"); 
ldap_unbind(ld); 
return(0); 
} 

ответ

2

После вызова ldap_initialize вам необходимо установить тип протокола , используя:

int protocol_version = LDAP_VERSION3; 
rc = ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &protocol_version); 
if (rc != LDAP_SUCCESS) { 
    fprintf(stderr, "ldap_simple_bind_s: %s\n", ldap_err2string(rc)); 
    return(1); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^