OpenDirectory.framework:无需登录/密码即可连接到远程服务器

时间:2019-09-11 14:55:14

标签: macos ldap

我尝试使用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 =无法打开会话,因为   守护程序拒绝了连接。

如果我尝试使用默认会话或不带选项的会话,则该会话是正确的。

有问题的想法吗?

0 个答案:

没有答案