Авторизуйтесь на сервере LDAP с C/C++

Я попробую ./ldapsearch -h 192.168.1.1 -p 389 -D uid=myname,ou=People,dc=mycompany,dc=ru -w mypassword -b dc=mycompany,dc=ru -xL myname

И я пишу этот код C++:

#define LDAP_DEPRECATED 1
#include "ldap.h"


SERVER_API void TestSherst()
{
    LDAP *ld;

    if ((ld = ldap_init("192.168.1.1", LDAP_PORT)) == NULL)
    {
        perror("ldap_init failed");
        exit(EXIT_FAILURE);
    }

    int desired_v = LDAP_VERSION3;
    if (ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &desired_v) != LDAP_OPT_SUCCESS)
    {
        ldap_perror(ld, "ldap_set_option failed!");
        exit(EXIT_FAILURE);
    }

    if (ldap_bind_s(ld, "uid=myname,ou=People,dc=mycompany,dc=ru", "mypassword", LDAP_AUTH_SIMPLE) != LDAP_SUCCESS)
    {
        ldap_perror(ld, "ldap_bind");
        exit(EXIT_FAILURE);
    }

    std::cout << "Connected" << std::endl;
}

Мне нужен хороший совет или, еще лучше, хороший гид.

Как я могу сделать запрос поиска из кода после этого? Может кто-нибудь дать мне ссылку на хорошую документацию?

1 ответ

Я могу привести вам пример,

предположим, что вы хотите найти человека, чей uid - bob, тогда вам нужно создать поисковый фильтр.

char *search_filter = "uid=bob";

и, предполагает, что ваша база поиска dc = mycompany, dc = ru.

LDAPMessage *res;

ldap_search_ext_s(ld, "dc=mycompany,dc=ru", LDAP_SCOPE_CHILDREN, search_filter, NULL, 0,NULL, NULL, NULL, 0, &res);

Выше API вызов будет извлекать результат поиска в res, позже вы можете использовать res получить атрибуты и значения результата поиска.

Другие вопросы по тегам