ldap_sasl_bind_s работает под Linux, но не под Windows - PullRequest
0 голосов
/ 27 марта 2019

В настоящее время я пытаюсь подключиться к серверу LDAP с помощью Windows API (Winldap.h). Когда я использую заголовок Linux (ldap.h), привязка работает правильно, и я могу продолжить свое исследование. Под окнами невозможно привязать, у меня всегда появляется ошибка «(81) Сервер не работает». Все же параметры одинаковы!

Вот код под Linux:

#include <ldap.h>

LDAP* ldapHandler;
ldap_initialize( &ldapHandler, "ldap://IP_SERVER");

int version( LDAP_VERSION3 );
ldap_set_option(ldapHandler, LDAP_OPT_PROTOCOL_VERSION, &version);

berval* serverCreds;
berval mycreds{};
mycreds.bv_val = "myPwd";
mycreds.bv_len = sizeof("myPwd");

int res = ldap_sasl_bind_s(ldapHandler, "cn=myuser,cn=users,dc=domain,dc=com", LDAP_SASL_AUTOMATIC, &mycreds, nullptr, nullptr, &serverCreds);
if(res != LDAP_SUCCESS) {
    std::cout << "Bind fail with: " << ldap_err2string(res) << std::endl;
} else {
    std::cout << "Bind success !" << std::endl;
}

Успешное связывание отображается. Теперь под Win32:

#include <winldap.h>

LDAP* ldapHandler;
ldapHandler = ldap_init("ldap://IP_SERVER", LDAP_PORT);

int version(LDAP_VERSION3);
ldap_set_option(ldapHandler, LDAP_OPT_PROTOCOL_VERSION, &version);

berval* serverCreds;
berval mycreds{};
mycreds.bv_val = "myPwd";
mycreds.bv_len = sizeof("myPwd");

int res = ldap_sasl_bind_s(ldapHandler, "cn=myuser,cn=users,dc=domain,dc=com", "DIGEST-MD5", &mycreds, nullptr, nullptr, &serverCreds);
if (res != LDAP_SUCCESS) {
    std::cout << "Bind fail with: " << ldap_err2string(res) << std::endl;
}
else {
    std::cout << "Bind success !" << std::endl;
}

Может кто-нибудь мне помочь, потому что идентификаторы и сервер в обоих кодах абсолютно одинаковы ... единственное различие, которое может сыграть, заключается в методе аутентификации, где под Linux макрос LDAP_SASL_AUTOMATIC обрабатывает все в одиночку. В Windows я указываю "DIGEST-MD5". Но мой сервер LDAP хорошо с этим справляется:

ldapsearch -h IP_SERVER -p 389 -x -b "" -s base -LLL supportedSASLMechanisms

supportedSASLMechanisms: GSSAPI
supportedSASLMechanisms: GSS-SPNEGO
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...