C #: Как подключиться к Active Directory с включенным SSL?

2

Проект, над которым я работаю, будет интегрироваться с Active Directory Active Directory для аутентификации пользователей. Я пытался написать код, который будет извлекать пароль пользователя, и я понимаю, что Active Directory будет показывать только соответствующие свойства по SSL-соединению на порту 636.

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

static void Main(string[] args)
{
    DirectoryEntry entry = new DirectoryEntry(@"LDAP://<IP>/CN=LDAP Test,CN=Users,DC=customer,DC=com");
    entry.AuthenticationType = AuthenticationTypes.None;
    entry.Username = "CN=LDAP Test,CN=Users,DC=customer,DC=com";
    entry.Password = "<password>";
    if (entry != null)
    {
        foreach (Object propName in entry.Properties.PropertyNames)
        {
            Console.WriteLine((String)propName);
        }
    }
}

Когда я меняю код на использование SSL, я получаю сообщение об исключении: Неизвестная ошибка (0x80005000) '.

Я включил SSL на сервере, на котором размещен Active Directory, установлен Microsoft CA на том же сервере и получил сертификат от CA.

Я могу подключиться к Active Directory через SSL с помощью Apache Directory Studio, но это не показывает свойства пароля.

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

static void Main(string[] args)
{
    DirectoryEntry entry = new DirectoryEntry(@"LDAPS://<IP>:636/CN=LDAP Test,CN=Users,DC=customer,DC=com");
    entry.AuthenticationType = AuthenticationTypes.SecureSocketsLayer;
    entry.Username = "CN=LDAP Test,CN=Users,DC=customer,DC=com";
    entry.Password = "<password>";
    if (entry != null)
    {
        foreach (Object propName in entry.Properties.PropertyNames)
        {
            Console.WriteLine((String)propName);
        }
    }
}

Я не уверен, куда пойти с этим, и нам будет очень полезно помочь.

  • 0
    Похожие страницы : stackoverflow.com/questions/287100/…
  • 0
    Часто задаваемые вопросы по ADAM находятся здесь: microsoft.com/windowsserver2003/adam/ADAMfaq.mspx#EOD
Показать ещё 1 комментарий
Теги:
ssl
active-directory

2 ответа

2
Лучший ответ

Я пытался написать код который будет получать пароль пользователя...

Это не связано с вашей проблемой SSL, но я не думаю, что получение пароля пользователя из Active Directory возможно. Он сохраняет только хэш и почему вы не получаете какое-либо свойство "password" при запросе свойств пользователя.

Обновленный ответ

После прочтения вашего комментария, похоже, вы ищете атрибут unicodePwd, который содержит хэш безопасности. Согласно информации MSDN, для записи этого атрибута требуется специальное SSL-соединение, но вы все равно не сможете его прочитать, потому что это запись - только атрибут.

В частности, из MSDN:

Атрибут unicodePwd никогда не возвращается LDAP-поиском.

Здесь также сообщение в форуме, которое я обнаружил, что, похоже, говорит то же самое:

Пароль пользователя хранится в Active Directory для объекта пользователя в атрибут unicodePwd. Эта атрибут может быть записан в ограниченные условия, но он не может читать по соображениям безопасности. (Источник)

  • 0
    Это хеш, который я ищу. Я признаю, что мой пост мог бы быть яснее об этом. Цель состоит в том, чтобы сравнить или авторизовать хеш, полученный из другой системы, с хешем, хранящимся в Active Directory.
  • 0
    Я обновил свой ответ относительно получения хэша.
0

Попробуйте добавить сертификат сервера и корневой сертификат в свой локальный магазин. Самый простой способ сделать это - использовать IE для подключения к https://your.domain.contoller:636. Затем щелкните по всем экранам сертификатов и добавьте их в свой магазин.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню