Проверка входа в Active Directory с использованием SSL - PullRequest
0 голосов
/ 14 апреля 2020

Я работаю над требованием, когда мне нужно проверить пользователя с активной учетной записью каталога. Для этого я использовал LdapConnection с PrincipalContext и во всех случаях я могу проверить пользователя без SSL. Но мне нужно использовать проверку пользователя с SSL. Я также использовал правильный порт, то есть 636 / TCP LDAP SSL

Но всякий раз, когда я пытался использовать порт 636 и устанавливал contextoption на ContextOptions.Negotiate | ContextOptions.SecureSocketLayer, получал ошибку «С сервером невозможно связаться».

Ниже приведен мой код

using (principalContext = new PrincipalContext(ContextType.Domain, ldapServerIp, null, ContextOptions.Negotiate | ContextOptions.SecureSocketLayer, userName, password))
{ 
    bool isCredentialValid = principalContext.ValidateCredentials(userName, password);
}

Адрес моего Ldap-сервера abc.com:636. Если я удалю порт 636 и использую значение по умолчанию ContextOption, то это аутентифицирует пользователей. Кто-нибудь когда-нибудь решал этот тип проблемы? Любая помощь будет оценена.

1 Ответ

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

Происходит одно из двух:

  1. Брандмауэр блокирует ваш доступ к порту 636 или
  2. Сертификат, который использует сервер, не является доверенным для вашего компьютера .

В прошлом я использовал код 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"

Убедитесь, что URL-адрес в первой строке соответствует имени вашего домена (но оставьте https://). Если вы действительно можете подключиться к порту 636, то увидите файл certificate.cer. Вы можете дважды щелкнуть по этому файлу, и вы увидите детали. Если ваш компьютер не доверяет ему, вы увидите большое предупреждение и знаете, что это ваша проблема.

Если сертификат не является доверенным, вам нужно установить сертификат root этого сертификата как Доверенный Root Сертификат на вашем компьютере.

...