Получить клиенты текущего контроллера домена

Я пытаюсь получить контроллер домена, который клиентский компьютер ASP.NET приложение подключено к использованию C#,

Приложение представляет собой приложение для внутренней сети, которое никогда не будет подключено к Интернету, и каждый пользователь, использующий приложение, должен пройти проверку подлинности через Windows. Следовательно, это означает, что пользователь всегда будет подключен к контроллеру домена в нашей корпоративной сети.

Я попытался использовать следующий код, но он возвращает контроллер домена, к которому подключен сервер IIS:

using System.DirectoryServices;

public static string GetDC()
{
    DirectoryEntry Entry = new DirectoryEntry("LDAP://rootDSE");
    return Entry.Properties["dnsHostname"].Value.ToString();
}

Я прочитал несколько других вопросов по этому вопросу, которые, кажется, все производят контроллер домена серверов IIS.

У меня вопрос, возможно ли получить клиент подключенного контроллера домена и если да, то как?

1 ответ

Несколько вещей об аутентификации Active Directory:

  • Пользователи не подключаются к контроллеру домена. Они проходят проверку подлинности в Active Directory, которая является распределенной службой, размещенной одним или несколькими контроллерами домена, которые реплицируют информацию между собой.
  • Когда пользователь аутентифицируется веб-приложением, именно IIS выполняет аутентификацию. Выдается запрос 401, и компьютер пользователя предоставляет учетные данные в виде токена. Затем IIS использует этот токен для аутентификации, авторизации и идентификации пользователя.
  • Пользователь веб-приложения, прошедший проверку подлинности Windows Authentication, представлен на сервере объектом WindowsIdentity. Объект WindowsIdentity содержит очень мало свойств, ни одно из которых не отображает основную информацию AD (кроме домена / имени пользователя).
  • Клиентский код (AKA javascript) не будет иметь доступа к конфиденциальной информации AD на вашем компьютере. Это было бы очень плохо, если бы это произошло.

Если вам нужны подробности о том, как именно работает аутентификация в AD, посмотрите здесь: https://technet.microsoft.com/en-us/library/cc780332(v=ws.10).aspx

Теперь, если пользователи находятся в разных доменах, вы МОЖЕТЕ получить домен по имени пользователя и использовать его для поиска AD.

string userNameWithDomain = HttpContext.Current.User.Identity.Name; // returns SOMEDOMAIN\USERNAME

Вы разделяете на \ и берете первый элемент.

Другие вопросы по тегам