web-dev-qa-db-fra.com

Le serveur LDAP est indisponible

Je suis un débutant total à cette

Essayez de vous connecter à un serveur LDAP avec PrincipalContext. J'ai essayé toutes les solutions sur ce site en vain. 

Choses que j'ai essayées:

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");

Tous donnent le même résultat: 

serveur LDAP non disponible

Seul ContextType.Machine fonctionne fondamentalement.

Pas sûr que mon serveur LDAP soit configuré correctement:

  • Hôte: localhost
  • Port: 389
  • DN de base: dc = maxcrc, dc = com
  • URL: ldap: // localhost: 389/dc = maxcrc, dc = com

Test avec le navigateur LDAP Softerra

Tous les tutoriels du début à la fin seront très appréciés ...

10
Anarchy101

J'ai été confronté au même problème et j'ai trouvé une solution.

Je peux me connecter facilement en utilisant le code suivant:

 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 */
7
Ravi Anand

J'ai eu des problèmes similaires. Il s'est avéré que je devais passer nom d'utilisateur et mot de passe lors de l'initialisation de l'objet. S'il vous plaît essayez d'utiliser une déclaration comme ci-dessous:

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

Assurez-vous également que votre nom d'utilisateur contient un domaine.

Par exemple,

userName = "mydomainname" + "\\" + "john_jacobs"
3
Dhruv Rangunwala

Utilisez la surcharge de constructeur suivante pour PrincipalContext:

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

Et séparez le nom du serveur de la chaîne 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

1
Owen Pauling

Cette erreur peut être due à une tentative de connexion en tant qu '"anonyme" sans la spécifier explicitement. Par défaut, toutes les connexions sont négociables. Donc, si vous essayez quelque chose comme ça, vous pouvez essayer ce qui suit:

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
objecto

Dans mon environnement, je devais créer le contexte principal avec uniquement le nom d'hôte du contrôleur de domaine, puis valider séparément les informations d'identification de l'utilisateur. 

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();
}

Cet exemple permet aux trois variantes du nom d'utilisateur de valider:

0
Chris Schaller

Vous voudrez peut-être essayer l'adresse de votre ordinateur local à la place:

ldap://127.0.0.1:389/dc=maxcrc,dc=com

Si cela ne fonctionne pas, je déclenche Wireshark et lui permet de capturer le trafic sur le port 389 pendant que vous essayez de vous connecter via Softerra.

Lorsque je travaillais avec LDAP et .Net DirectoryServices, cette erreur signifie généralement que la syntaxe ou la convention de dénomination du chemin est incorrecte ou ne pointe pas vers un noeud final de répertoire valide.

0
X3074861X