В настоящее время я пытаюсь подключиться к серверу 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
Спасибо