gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:52:15 50 4
gpt4 key购买 nike

我正在编写一个允许用户使用 LDAP 设置登录应用程序的应用程序。不支持 Start 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_start_tls_s 函数来实现。但我想在允许连接之前验证证书。有什么建议吗?

最佳答案

StarTLS 是一个扩展的 LDAP 操作,必须在您建立连接后发送。但是,服务器和/或客户端证书验证是 TLS 协议(protocol)的一部分。所以当你使用ldap_start_tls_s函数时,它会自动执行。

如果您想在连接时验证服务器证书,您应该使用 LDAP over SSL,并连接到 LDAPS 端口。您可以为此使用 ldap_sslinit() 方法。

关于c++ - 在 LDAP 中添加 StartTLS 和 LDAPS 选项时验证客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47923489/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com