簡體   English   中英

從C / C ++向LDAP服務器認證

[英]Authehticate to LDAP server from 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;
}

我需要一個很好的建議,或者甚至更好的一個指導。

之后如何從代碼發出搜索請求? 有人可以給我推薦好的文檔嗎?

我可以舉一個例子

假設您要搜索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獲取搜索結果的屬性和值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM