Проект, над которым я работаю, будет интегрироваться с 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 на том же сервере и получил сертификат от ЦС.
Я могу подключиться к 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);
}
}
}
Я не уверен, куда идти с этим, и некоторая помощь будет принята с благодарностью.