我尝试使用OpenDirectory框架请求ldap目录服务。
以前,我使用openldap,但已弃用。 使用openldap时,connexion无需登录名和密码:
if ((ld = ldap_init(HOSTNAME, PortServeur)) == nullptr)
{
return -1;
}
int version = LDAP_VERSION3;
ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &version);
int rc = ldap_simple_bind_s(ld, nullptr, nullptr);
if (rc != LDAP_SUCCESS)
{
return rc;
}
openldap没问题
使用OpenDirectory,我尝试使用以下选项创建会话:
NSError* error = nil;
NSString* _remoteNetAddress = @"my.directory.service.fr";
NSString* _port = @"389";
NSString* _userName = @"";
NSString*_userPass = @"";
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
_remoteNetAddress, kODSessionProxyAddress,
_port, kODSessionProxyPort,
_userName, kODSessionProxyUsername,
_userPass, kODSessionProxyPassword,
nil];
ODSession *session = [ODSession sessionWithOptions:options error:&error];
if (session == nil) {
CFShow(error);
CFRelease(error);
return;
}
NSLog(@"Node names: %@", [session nodeNamesAndReturnError:&error]);
ODNode* node = [ODNode nodeWithSession:session
type:kODNodeTypeAuthentication
error:&error];
if (node == nil) {
CFShow(error);
CFRelease(error);
return ;
}
我有错误:
Error Domain = com.apple.OpenDirectory代码= 1100“无法打开代理 会话” UserInfo = {NSLocalizedDescription =无法打开代理 会话,NSLocalizedFailureReason =代理由于通信失败 错误。}
似乎地址不是问题,因为如果我用错误的地址进行测试,则会出现另一个错误:
Error Domain = com.apple.OpenDirectory代码= 1003“无法打开代理 会话” UserInfo = {NSLocalizedDescription =无法打开代理 会话,NSLocalizedFailureReason =无法打开会话,因为 守护程序拒绝了连接。
如果我尝试使用默认会话或不带选项的会话,则该会话是正确的。
有问题的想法吗?