Проверка подлинности с помощью Active Directory - протокол LDAP - PullRequest
0 голосов
/ 27 января 2011

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 27 января 2011

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

http://www.codeproject.com/KB/system/everythingInAD.aspx#35

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

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)
{
}
0 голосов
/ 30 октября 2018

Прошло какое-то время, но я думаю, что я точно понимаю, о чем этот вопрос.

Я проверил на этом великолепном бесплатном для тестирования сервере 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.

0 голосов
/ 27 января 2011
LDAP://domain

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

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

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

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

...