C++ 在LDAP中添加StartTLS和LDAPS选项时验证客户端证书
我正在编写一个应用程序,允许用户使用LDAP设置登录到应用程序。 不支持启动TLS/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 (
#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方法来实现这一点