Программное создание учетной записи AD через безопасный LDAP - PullRequest
0 голосов
/ 16 апреля 2020

В настоящее время я успешно создаю учетные записи AD через C# через соединение LDAP с использованием PrincipalContext. Я создаю новый UserPrincipal, применяю различные свойства по мере необходимости и вызываю save ()

По существу, что-то вроде этого

using(var pc = new PrincipalContext(ContextType.Domain))
{
  using(var up = new UserPrincipal(pc))
  {
    up.SamAccountName = "whatever";
    up.EmailAddress = "test@example.com";
    up.SetPassword(password);
    up.Enabled = true;
    up.Save();
  }
}

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

Возможно, ТАК не тот форум для этого, я рад перенести вопрос на другой форум, если так.

1 Ответ

1 голос
/ 16 апреля 2020

TCP-порт по умолчанию для LDAP - 389. Это то, что используется, если вы не укажете иначе. Чтобы использовать LDAPS, необходимо указать порт LDAPS 636. Например:

using(var pc = new PrincipalContext(ContextType.Domain, "example.com:636"))

Где example.com - это имя вашего домена.

Однако для использования LDAPS требуется, чтобы ваш компьютер доверял сертификат SSL, который использует сервер. Иногда используется самоподписанный сертификат, и это может привести к сбою. PrincipalContext не сообщает об ошибках сертификата. Он сообщает, что с сервером невозможно связаться. Поэтому, если у вас возникла проблема, вы можете использовать этот сценарий PowerShell, чтобы загрузить сертификат и проверить его:

$webRequest = [Net.WebRequest]::Create("https://example.com:636")
try { $webRequest.GetResponse() } catch {}
$cert = $webRequest.ServicePoint.Certificate
$bytes = $cert.Export([Security.Cryptography.X509Certificates.X509ContentType]::Cert)
set-content -value $bytes -encoding byte -path "certificate.cer"

Измените первую строку, указав свое доменное имя. Если это сработает, будет файл с именем certificate.cer, который можно дважды щелкнуть и проверить. Если ваш компьютер не доверяет ему, вы увидите сообщение об этом. Если это проблема, вам, вероятно, просто нужно установить сертификат root как «Надежный Root сертификат» на ваш компьютер.

...