Сервер LDAP недоступен на порту 636C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Сервер LDAP недоступен на порту 636

Сообщение Anonymous »

Я застрял в этой проблеме уже несколько недель. Приложение является устаревшим .NET 4.0, и это код подключения к порту 636: < /p>

Код: Выделить всё

LDAPModel message = new LDAPModel();

string ldapServer = ConfigurationManager.AppSettings["LDAP_host"];
string adminUsername = ConfigurationManager.AppSettings["LDAP_admin_username"];
string adminPassword = ConfigurationManager.AppSettings["LDAP_admin_password"];

int ldapPort = 636; //389

string UsersDN = "ou=users,o=data";

LdapConnection ldapConnection = null;
errorMessage = string.Empty;

try
{
// Log: Attempting to create connection
Log("Creating LDAP connection to server: " + ldapServer + " on port: " + ldapPort);

if (CreateConnection(ref ldapConnection, ldapServer, ldapPort, adminUsername, adminPassword))
{
Log("LDAP connection created successfully. Attempting to bind with admin credentials.");

try
{
ldapConnection.Bind();
Log("Admin bind successful.");
}
catch (LdapException ex)
{
message.STATUS = false;
message.VALUE = "Admin bind failed: " + ex.Message +
"\nError Code: " + ex.ErrorCode +
"\nServer Message: " + ex.ServerErrorMessage;

if (ldapConnection != null)
{
ldapConnection.Dispose();
}

return message;
}
}
}

private bool CreateConnection(ref LdapConnection con, string server, int port, string username, string password) //this is for port 636
{
try
{
//System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

con = new LdapConnection(new LdapDirectoryIdentifier(server, port));
con.SessionOptions.SecureSocketLayer = true;
con.SessionOptions.VerifyServerCertificate = (connection, certificate) => true;

// con.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback(ServerCallBack);
con.SessionOptions.ProtocolVersion = 3;
con.AuthType = AuthType.Basic;

con.Credential = new NetworkCredential(username, password);

return true;
}
catch (LdapException)
{
return false;
}
catch (Exception)
{
return false;
}
}

private bool CreateConnectionWithoutCert(ref LdapConnection con, string server, int port, string username, string password)//this is test for port 389
{
try
{
con = new LdapConnection(new LdapDirectoryIdentifier(server, port));

// ⚠️ Do not use SSL or StartTLS
con.SessionOptions.SecureSocketLayer = false;

// ⚠️ Do not use StartTLS — leave this out
// con.SessionOptions.StartTransportLayerSecurity(null);

con.SessionOptions.ProtocolVersion = 3;
con.AuthType = AuthType.Basic;

con.Credential = new NetworkCredential(username, password);

return true;
}
catch (LdapException)
{
return false;
}
catch (Exception)
{
return false;
}
}

private bool ServerCallBack(LdapConnection connection, X509Certificate certificate)
{
return true;
}
< /code>
Я показал вам соответствующие части кода. Принципал, пароль и имя хоста поступают из файла web.config 
. Однако, чтобы отметить, когда я использовал код < /p>
con.SessionOptions.StartTransportLayerSecurity(null);
< /code>
Bind Fake, и я получаю эту ошибку: < /p>

Проверьте учетные данные LDAP < /p>
< /blockquote>
Проблема - порт 636, привязка сохраняет неудачу, и я продолжает получать: < /p>
add ward ind wath wath wath wath: < /p>

недоступно. < /p>
< /blockquote>
Вещи, которые я пробовал: < /p>

[*] telnet в порт 636, и порт показывает, что его открытый < /p>
< /li>
У меня есть сертификат, который был сертификат, а другой - сертификат, а другой - сертификат, а другой - сертификат, а другой - сертификат, а другой - сертификат, и другой - сертификат. CERTLM и CERTMGR как надежного корня, так и личного

[*] Приложение использует только TLS 1.2, потому что это старый

Каталог Apache был использован для подключения к серверу к порту. /> < /li>
Я использовал Wireshark на сервере, и показывает, что клиент Hello был отправлен из приложения, и он показал, что это был TLS 1.2 < /p>
< /li>
< /ul>
Я хочу найти корень проблемы, это из -за сертификатов? Я попросил команду LDAP дать мне полную цепочку сертификатов, но они сказали, что сертификат, подписанный, уже достаточно. Это из -за TLS 1.2? Есть ли код, который мне не хватает? Я не могу понять, как подключиться к порту 636.

Подробнее здесь: https://stackoverflow.com/questions/797 ... n-port-636
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сервер LDAP недоступен на порту 636
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Служба Windows LdapException: сервер LDAP недоступен
    Anonymous » » в форуме C#
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Невозможно подключиться к порту Arduino с помощью Visual Studio (Доступ к порту COM4 запрещен)
    Anonymous » » в форуме C#
    0 Ответы
    104 Просмотры
    Последнее сообщение Anonymous
  • Невозможно подключиться к порту Arduino с помощью Visual Studio (Доступ к порту COM4 запрещен)
    Гость » » в форуме C#
    3 Ответы
    100 Просмотры
    Последнее сообщение Гость
  • Как выполнить поиск/аутентификацию LDAP по этому LDAP в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»