C++ 在LDAP中添加StartTLS和LDAPS选项时验证客户端证书

C++ 在LDAP中添加StartTLS和LDAPS选项时验证客户端证书,c++,windows,ldap,C++,Windows,Ldap,我正在编写一个应用程序,允许用户使用LDAP设置登录到应用程序。 不支持启动TLS/LDAPS的示例程序: #include <windows.h> #include <winldap.h> int main(){ LDAP *ldap =NULL; int returnCode = -1; int version = LDAP_VERSION3; ldap = ldap_init(hostName, PORT); if (

我正在编写一个应用程序,允许用户使用LDAP设置登录到应用程序。 不支持启动TLS/LDAPS的示例程序:

#include <windows.h>  
#include <winldap.h>

int main(){
    LDAP *ldap =NULL;
    int returnCode = -1;
    int version = LDAP_VERSION3;

    ldap = ldap_init(hostName, PORT);
    if (ldap == NULL) {
        printf("Failed to init LDAP connection");
        return FALSE;
    }

    returnCode = ldap_set_option(ldap, LDAP_OPT_PROTOCOL_VERSION, (void*)&version);
    if (returnCode != LDAP_SUCCESS) {
        cout<<"LDAP: Could not set options. Error: "<< returnCode <<" "<< ldap_err2string(returnCode);
        ldap_unbind(ldap);
        return FALSE;
    }

    returnCode = ldap_connect(ldap, NULL);
    if (returnCode != LDAP_SUCCESS) {
        printf("LDAP: Could not establish connection. Error: %d %s", returnCode, ldap_err2string(returnCode));
        ldap_unbind(ldap);
        return FALSE;
     }

     returnCode = ldap_bind_s(ldap, binddn, bindpwd, LDAP_AUTH_SIMPLE);
     if (returnCode != LDAP_SUCCESS) {
        printf("LDAP: Could not establish connection. Error: %d %s", returnCode,  ldap_err2string(returnCode));
        ldap_unbind(ldap);
        return FALSE;
     }
}

StartTLS可以使用ldap\u start\u tls\s函数实现。但是我想在允许连接之前验证证书。有什么建议吗?

STARTS是一个扩展的LDAP操作,必须在建立连接后发送。但是,服务器和/或客户端证书验证是TLS协议的一部分。因此,当您使用ldap_start_tlss函数时,它将自动执行

如果要在连接时验证服务器证书,应使用LDAP over SSL,并连接到LDAPS端口。您可以使用ldap\u sslinit方法来实现这一点