wake-up-neo.com

Der LDAP-Server ist nicht verfügbar

Ich bin ein totaler Neuling

Es wird versucht, mit PrincipalContext eine Verbindung zu einem LDAP-Server herzustellen. Ich habe alle Lösungen auf dieser Site ohne Erfolg ausprobiert. 

Dinge, die ich ausprobiert habe:

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

Alle geben das gleiche Ergebnis: 

LDAP-Server nicht verfügbar

Grundsätzlich funktioniert nur ContextType.Machine.

Nicht sicher, ob mein LDAP-Server korrekt eingerichtet ist:

  • Gastgeber: localhost
  • Hafen: 389
  • Basis-DN: dc = maxcrc, dc = com
  • URL: ldap: // localhost: 389/dc = maxcrc, dc = com

Testen mit dem Softerra LDAP-Browser

Alle Tutorials von Anfang bis Ende werden sehr geschätzt ...

10
Anarchy101

Ich bin mit dem gleichen Problem konfrontiert und habe eine Lösung gefunden.

Ich kann mit folgendem Code problemlos eine Verbindung herstellen:

 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

Ich hatte ähnliche Probleme. Es stellte sich heraus, dass ich bei der Objektinitialisierung Benutzername und Passwort übergeben musste. Bitte versuchen Sie es mit einer Aussage wie folgt:

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

Stellen Sie außerdem sicher, dass Ihr Benutzername eine Domäne enthält.

Zum Beispiel,

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

Verwenden Sie die folgende Konstruktorüberladung für PrincipalContext:

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

Trennen Sie den Servernamen von der LDAP-Zeichenfolge:

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

https://msdn.Microsoft.com/de-de/library/bb348316%28v=vs.110%29.aspx

1
Owen Pauling

Dieser Fehler kann darauf zurückzuführen sein, dass versucht wurde, eine Verbindung als "anonym" herzustellen, ohne dies explizit anzugeben. Standardmäßig sind alle Verbindungen verhandelbar. Wenn Sie so etwas versuchen, könnten Sie folgendes versuchen:

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

In meiner Umgebung musste ich den Hauptkontext nur mit dem Hostnamen des Domänencontrollers erstellen und die Benutzeranmeldeinformationen separat überprüfen. 

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

In diesem Beispiel können alle drei dieser Varianten des Benutzernamens überprüft werden:

0
Chris Schaller

Sie können stattdessen die Adresse Ihres lokalen Computers ausprobieren:

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

Wenn dies nicht funktioniert, würde ich Wireshark starten und den Verkehr auf Port 389 erfassen, wenn Sie versuchen, über Softerra eine Verbindung herzustellen.

In meiner Zeit bei der Arbeit mit LDAP und .Net DirectoryServices bedeutet dieser Fehler normalerweise, dass die Syntax oder Namenskonvention des Pfads falsch ist oder nicht auf einen gültigen Verzeichnisendpunkt verweist.

0
X3074861X