Как я могу программно определить мой домен Active Directory, используя только мое основное имя пользователя на языке C?

Моя текущая программа на C выполняет аутентификацию в нескольких доменах Active Directory с помощью sAMAccountName / domain. Он использует файл конфигурации для сопоставления домена с правильным сервером VIP (виртуальный IP) для привязки и запроса. Я изменяю его, чтобы использовать userPrincipalName, который является адресом электронной почты. Доменная часть userPrincipalName не обязательно совпадает с доменом, который сопоставляется с VIP-серверами.

Используя свою учетную запись, я могу подключиться к любому из VIP-серверов, но, поскольку я не обязательно являюсь членом Active Directory на этом сервере, я не могу делать запросы. Прямо сейчас мне нужно перебрать каждый сервер, пока я не найду тот, членом которого я являюсь. Это не мой идеальный подход.

Мой вопрос: есть ли способ узнать, членом какого домена Active Directory я являюсь, используя только userPrincipalName? Я читал, что, возможно, есть способ добиться этого путем доступа к Глобальному каталогу. Это правильный подход, и если да, то как это делается с помощью OpenLDAP LDAP api? Если это неправильный подход, есть ли способ запросить первый VIP-сервер, на котором я обязан спросить, какой у меня домен Active Directory?

Любая помощь будет оценена.


person justJ    schedule 20.03.2014    source источник


Ответы (1)


вы можете использовать принципал system.secutiry, и имя будет возвращено в формате domain \ usename, первый бит будет доменом, вам не нужно переходить в AD

mystring= System.Security.Principal.WindowsIdentity.GetCurrent().Name;
person saj    schedule 20.03.2014
comment
Спасибо, но это программа на C, использующая Windows C LDAP API - person justJ; 20.03.2014