2015-03-30 4 views
0

У меня есть некоторые процессы, которым требуется доменное имя текущего поставщика LDAP (в основном, для синхронизации информации пользователя с AD).Поиск доменного имени LDAP на (виртуальном) сервере

Процесс запрашивает у пользователя исходный LDAP-сервер, но предоставляет информацию по умолчанию (так что вы можете просто использовать значение по умолчанию).

Следующий код работает для пользователей рабочих станций, но не работает на серверах:

var uri = "LDAP://" + Environment.GetEnvironmentVariable("LOGONSERVER"); 

Я также пытался "ldap://rootDSE" но NotSupportedException вышвырнули:

Поставщик не поддерживает поиск и не может выполнять поиск LDAP : // RootDSE.

Итак, у меня есть несколько вопросов:

  1. Почему LOGONSERVER envvar недоступны на серверах?
  2. Что я могу сделать вместо этого?
  3. Как я понимаю, RootDSE - это ступенька к настоящему серверу LDAP?

ответ

0

После дальнейшего изучения RootDSE, я придумал этот код:

using (DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE")) 
{ 
    result = (rootDSE.Properties["dnsHostName"].Value ?? "").ToString(); 
    if (result != "") return result; 
} 

кажется, делать то, что мне нужно.

Однако остальная часть моих вопросов не осталась без ответа.

0

Не уверен, что вы подразумеваете под "LDAP Domain Name", но имя домена доступен из LDAP RootDSE из атрибута:

defaultNamingContext: DC=YOURDOMAIN,DC=NET 

C# является широкая тема, но я вижу https://msdn.microsoft.com/en-us/library/aa393248%28v=vs.85%29.aspx показывает доступ на rootDSE и конкретно показывает defaultNamingContext.

-Джим

Смежные вопросы