Как я могу получить доменное имя для пользователя, вошедшего в Mac через Active Directory - PullRequest
7 голосов
/ 02 июня 2010

В моем приложении Какао как я могу получить домен текущего пользователя, когда он вошел в систему через Active Directory?

Мне нужно определить две вещи:

  1. Если текущий пользователь вошел в домен Active Directory (необходимо обрабатывать только Active Directory).
  2. Если 1, домен пользователя.

Я нашел ссылки на Службы каталогов и Руководство по программированию Open Directory , но последнее - только 10.6 (я должен поддерживать 10.5+), и я не смог найти никаких примеров для первый, который дал мне представление о том, что мне нужно было сделать.

Ответы [ 3 ]

3 голосов
/ 10 июня 2010

dsconfigad -show

Он покажет, привязан ли вы к каталогу, и подробную информацию об этом каталоге, если он связан. Тогда вы будете знать, как писать сценарии DSCL.

1 голос
/ 08 марта 2013

Я думаю, вы можете использовать ту же идею, что и здесь:

Mac OSX: определение, является ли учетная запись пользователя Active Directory по сравнению с локальным пользователем с использованием target-c

вам просто нужно найти узел сети или аутентификации (это тип kODNodeTypeAuthentication) и запросить его для kODAttributeTypeRecordName со значением запроса, установленным на текущее имя пользователя Тогда посмотрите на результат поиска, там вы найдете много интересного:)

0 голосов
/ 16 мая 2018

Вы можете использовать этот код, но обратите внимание, что я предполагаю, что вы ссылаетесь на пользователя, который запускает текущее приложение, если вы работаете от имени root, оно не будет работать. Если вы запускаете его как root, просто измените NSUserName () в запросе на нужного пользователя, которого вы хотите запросить.

std::string getDomainForCurrentUser()
{
    ODSession *session = [ODSession defaultSession];
    ODNode *node = [ODNode nodeWithSession:session type:kODNodeTypeAuthentication error:NULL];
    ODQuery *query = [ODQuery queryWithNode:node forRecordTypes:kODRecordTypeUsers attribute:kODAttributeTypeRecordName matchType:kODMatchEqualTo queryValues:NSUserName() returnAttributes:kODAttributeTypeStandardOnly maximumResults:0 error:NULL];
    NSArray *records = [query resultsAllowingPartial:NO error:NULL];

    for (ODRecord *record in records)
    {
        NSArray *recordLines = [record valuesForAttribute:kODAttributeTypePrimaryNTDomain error:nil];

        if (recordLines)
        {
            NSString *domain = [recordLines firstObject];
            std::string([domain UTF8String]);

        }
    }

    return "";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...