O servidor LDAP não está disponível

Sou um novato nisto.

a tentar ligar-se a um servidor ldap com PrincipalContext. Tentei todas as soluções neste site sem sucesso.

coisas que tentei:

PrincipalContext insPrincipalContext = 
   new PrincipalContext(ContextType.Domain);

PrincipalContext insPrincipalContext = 
   new PrincipalContext(ContextType.Domain, "ldap://localhost:389/dc=maxcrc,dc=com");

PrincipalContext insPrincipalContext = 
   new PrincipalContext(ContextType.Domain, "maxcrc.com");

todos dão o mesmo resultado:

servidor LDAP não disponível

apenas ContextType.Machine funciona basicamente.

não sei se o meu servidor LDAP está configurado correctamente:

  • Máquina: localhost
  • Porto: 389
  • Base DN: dc=maxcrc, dc=com
  • URL: ldap: / / localhost:389 / dc=maxcrc, dc=com

a testar com o navegador Softerra LDAP

todos os tutoriais do início ao fim serão muito apreciados...

Author: marc_s, 2013-01-23

6 answers

Tenho enfrentado o mesmo problema e encontrei uma solução.

Sou capaz de me ligar facilmente usando o seguinte código:

 ADUser_Id = "domainName\\username"; //make sure user name has domain name.
 Password = "xxxx";
var context = new PrincipalContext(ContextType.Domain,"server_address", ADUser_Id,Password);
/* server_address = "192.168.15.36"; //don't include ldap in url */
 6
Author: Ravi Anand, 2015-12-28 13:51:05
Tinha problemas semelhantes. Acontece que eu tinha que passar o nome de usuário e senha na inicialização do objeto. Por favor, tente usar uma declaração como abaixo:
PrincipalContext insPrincipalContext = 
new PrincipalContext(ContextType.Domain, 
"ldap://localhost:389/dc=maxcrc,dc=com",
userName,
password);

Certifique-se também que o seu nome de utilizador tem domínio nele.

Por exemplo,

userName = "mydomainname" + "\\" + "john_jacobs"
 3
Author: Dhruv Rangunwala, 2013-10-21 22:10:11

Em vez disso, tente o seu endereço da máquina local:

ldap://127.0.0.1:389/dc=maxcrc,dc=com
Se isso não funcionar, eu ligava a Wireshark e mandava-a capturar o tráfego na porta 389, enquanto tenta ligar-se através da Softerra.

No meu tempo a trabalhar com os DirectoryServices LDAP e.Net, esse erro normalmente significa que a sintaxe ou convenção de nomes do caminho está incorrecta, ou não aponta para um ponto final de directório válido.

 0
Author: X3074861X, 2013-07-25 17:02:14

Esse erro pode ser devido a tentar ligar-se como" anónimo " sem especificá-lo explicitamente. Por padrão, todas as conexões são negociáveis. Então, se você tentar algo assim você pode tentar o seguinte:

LdapDirectoryIdentifier ldap = new LdapDirectoryIdentifier("My Hostname or IP Address",10389); //10389 might be your non default port
LdapConnection connection = new LdapConnection(ldap);
connection.AuthType = AuthType.Anonymous;
 0
Author: objecto, 2013-10-11 09:14:02

Utilize a seguinte sobrecarga do construtor para:PrincipalContext:

public PrincipalContext(
    ContextType contextType,
    string name,
    string container
)

E separar o nome do servidor do texto LDAP:

PrincipalContext insPrincipalContext = 
   new PrincipalContext(ContextType.Domain, "localhost:389", "dc=maxcrc,dc=com");

Https://msdn.microsoft.com/en-us/library/bb348316%28v=vs.110%29.aspx

 0
Author: Owen Pauling, 2016-06-01 09:35:07

No meu ambiente tive de criar o contexto principal apenas com o nome da máquina do controlador de domínio, e depois validar separadamente as credenciais do utilizador.

string domainControllerName = "PDC";
string domainName = "MyDomain"; // leave out the .Local, this is just to use as the prefix for the username if the user left it off or didn't use the principal address notation
string username = "TestUser";
string password = "password";

using (var ldap = new PrincipalContext(ContextType.Domain, domainControllerName))
{
    var usernameToValidate = username;
    if (!usernameToValidate.Any(c => c == '@' || c == '\\'))
            usernameToValidate = $"{domainName}\\{username}";

    if (!ldap.ValidateCredentials(username, context.Password, ContextOptions.SimpleBind))
        throw new UnauthorizedException();
}

Este exemplo permite que todas as três destas variações do utilizador validem:

 0
Author: Chris Schaller, 2017-06-09 03:28:11