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

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

Сообщение Anonymous »

Я застрял в этой проблеме уже несколько недель. Приложение - это .NET Framework 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>
Я показал вам соответствующие части кода. Принципал, пароль и имя хоста поступают из WebConfig. Я знаю, что проблема не является основным, паролем или именем хоста, потому что, когда я тестировал с портом 389, она работает должным образом, я могу правильно связать. Однако, чтобы отметить, когда я использовал код «conssessionOptions.StartTransportLayerSecurity (null);», Bind не удалась, и в нем говорилось: «Проверьте учетные данные LDAP».
Проблема - порт 636, привязка поддерживает сбой, и я продолжаю получать:
Addion Bind. /> Вещи, которые я пробовал: < /p>
-telnet в порт 636, и порт показывает, что его открытый < /p>
-i получил сертификаты, один из них является сертификатом корня, а другой-листовой сертификат, я поместил Certs в сертификат и Certmgr. Потому что его старый. < /p>
-Apache Каталог использовался для подключения к серверу к порту 636, и он показал, что он может подключаться к сертификату, но также отметить, что он использует TLS 1.3 < /p>
-Isesest Wireshark на сервере, и он показывает, что клиент Hello был отправлен из-за того, что он показал, что это было то, что он был выявлено, это было то, что он был выявлено, это было то, что он был выявлено, это было то, что он показал, что это было выявлено. Это из -за сертификатов? Я попросил команду 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 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Служба Windows LdapException: сервер LDAP недоступен
    Anonymous » » в форуме C#
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Невозможно подключиться к порту Arduino с помощью Visual Studio (Доступ к порту COM4 запрещен)
    Anonymous » » в форуме C#
    0 Ответы
    104 Просмотры
    Последнее сообщение Anonymous
  • Невозможно подключиться к порту Arduino с помощью Visual Studio (Доступ к порту COM4 запрещен)
    Гость » » в форуме C#
    3 Ответы
    101 Просмотры
    Последнее сообщение Гость
  • Как выполнить поиск/аутентификацию LDAP по этому LDAP в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    49 Просмотры
    Последнее сообщение Anonymous

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