c++ - 从 C/C++ 向 LDAP 服务器进行身份验证

标签 c++ c ldap openldap

我尝试./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我的名字

我编写了这个 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;
}

我需要一个好的建议,或者更好的是,一个好的指导。

之后如何通过代码发出搜索请求? 有人可以给我引用好的文档吗?

最佳答案

我可以举个例子

假设你想搜索一个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获取搜索结果的属性和值。

关于c++ - 从 C/C++ 向 LDAP 服务器进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44800771/

相关文章:

c# - Microsoft 标准计算器中使用的变量类型

c - SetWindowsHookEx - 取消Winkey + L(电脑锁定)

C程序三维表的第一个值

ldap - Spring LDAP ODM-入口类应声明为最终警告

c# - LDAP 与 ADSI 在操作 Active Directory 用户方面的比较

java - 登录 ldap java

c++ - 生成巨大的 Boost.MPL 类型序列

c++ - 对不完整类型的空指针调用 delete 是否合法?

c++ - C++中指向字符数组的指针

c - 在 C 中使用 math.h sqrt 函数