Проверка подлинности с помощью Active Directory - протокол LDAP

Мне нужно создать веб-страницу, которая аутентифицирует пользователей по существующему активному каталогу. Домен на самом деле представляет собой конфигурацию облачных вычислений, где в стеке находятся контроллер домена и несколько других серверов.

Я понимаю, что объекты из пространства имен System.DirectoryServices могут быть использованы. Тем не менее, я не могу найти путь к коду к активному каталогу через адрес LDAP://domain.com. Кажется, не происходит никакого общения. Я подозреваю, что требуется некоторая начальная конфигурация или меры безопасности, блокирующие связь.

Я работаю с этим примером из MSDN: http://msdn.microsoft.com/en-us/library/ms180890(v=vs.80).aspx.

Я получаю сообщение об ошибке, в котором говорится, что сервер не работает.

3 ответа

Посмотрите на эту ссылку (заменил старую на web.archive.org):

http://web.archive.org/web/20110317102802/http://www.codeproject.com/KB/system/everythingInAD.aspx

Вот как получить запись по умолчанию:

try
{
    System.DirectoryServices.DirectoryEntry AdRootDSE = new System.DirectoryServices.DirectoryEntry("LDAP://rootDSE");
    string rootdse = System.Convert.ToString(AdRootDSE.Properties["defaultNamingContext"].Value);

    if (!rootdse.StartsWith("LDAP://", StringComparison.OrdinalIgnoreCase) && !rootdse.StartsWith("LDAPS://", StringComparison.OrdinalIgnoreCase))
    {
        rootdse = "LDAP://" + rootdse;
    }

    return rootdse;
}
catch (Exception ex)
{
}

Это было какое-то время, но я думаю, что достигну именно этого вопроса.

Я протестировал этот великолепный бесплатный сервер LDAP для тестирования

var path = "LDAP://ldap.forumsys.com:389/dc=example,dc=com";
var user = $@"uid={username},dc=example,dc=com";
var pass = "password";

var directoryEntry = new DirectoryEntry(path, user, pass, AuthenticationTypes.None);

var searcher = new DirectorySearcher(directoryEntry);
searcher.PropertiesToLoad.Add("*");
var searchResult = searcher.FindOne();

Однако я не совсем понимаю, что делают все эти строки, и, ища решение, я нашел несколько рекомендаций.

по пути строка "LDAP://" должна быть в блоке mayus.

у пользователя иногда нужно использовать "cn=username-admin" для проверки администраторов, также обязательно установите тип аутентификации на ServerBind.

LDAP://domain

может использоваться, когда сервер присоединен к указанному домену; Затем он должен иметь возможность разрешить контроллер домена при правильной конфигурации DNS.

В противном случае, если у вас есть fqdn или ip-адрес контроллера домена, вы можете использовать

LDAP://fqdn.of.domaincontroller /* or */ LDAP://100.10.100.10

Это означает, что вы привязаны к этому одному контроллеру домена, поэтому, если эта машина выйдет из строя или будет удалена, вы не сможете пройти аутентификацию.

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