Ich versuche, eine Verbindung zu einem lokalen LDAP-Server herzustellen, den ich mit Apache Directory Studio eingerichtet habe. Ich bin mit Visual Studio 2015 Enterprise Update 2 und MVC 5.Verbindung mit einem lokalen LDAP-Server über MVC herstellen 5
Dies sind die beiden Ansätze ich bin mit Arbeit:
public void ldap()
{
try
{
DirectoryEntry entry = new DirectoryEntry("LDAP://localhost:10389");
DirectorySearcher mySearcher = new DirectorySearcher(entry);
var result = mySearcher.FindOne();
}
catch (System.Runtime.InteropServices.COMException)
{
System.Runtime.InteropServices.COMException exception = new System.Runtime.InteropServices.COMException();
Console.WriteLine(exception);
}
catch (InvalidOperationException)
{
InvalidOperationException InvOpEx = new InvalidOperationException();
Console.WriteLine(InvOpEx.Message);
}
catch (NotSupportedException)
{
NotSupportedException NotSuppEx = new NotSupportedException();
Console.WriteLine(NotSuppEx.Message);
}
}
Nach var result = mySearcher.FindOne() ausgeführt wird, ein System- .Runtime.InteropServices.COMException 'in System.DirectoryServices.dll tritt auf und gibt an, dass ein HRESULT E_FAIL-Fehler beim Aufrufen einer COM-Komponente übergeben wurde.
Ich habe keine Ahnung, was das bedeutet und habe mit Google nicht hilfreich gefunden.
2. Ansatz:
try
{
LdapConnection ldapConnection = new LdapConnection("LDAP://localhost:10389");
var networkCredential = new NetworkCredential("cbrunato", "c2VjcmV0", "dc=example,dc=com");
ldapConnection.SessionOptions.SecureSocketLayer = true;
ldapConnection.SessionOptions.VerifyServerCertificate += delegate { return true; };
ldapConnection.AuthType = AuthType.Negotiate;
ldapConnection.Bind(networkCredential);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Nach ldapConnection.Bind (NetworkCredential) ausgeführt wird, ich die Fehlermeldung "LDAP-Server ist nicht verfügbar".
Wenn ich den LDAP-Server stoppe und das Programm starte, bekomme ich die gleichen Fehler, also nehme ich keine Verbindung zu meinem LDAP-Server mit beiden Ansätzen, aber ich habe keine Ahnung warum.
Ich bin sehr dankbar für jede Hilfe.
Update: Credentials sind ungültig Ausnahme
Strings als Benutzername verwendet:
"uid=cbrunato"
"cn=Chuck Brunato"
"cn=Chuck Brunato,ou=Users,dc=example,dc=com"
"uid=cbrunato,cn=Chuck Brunato,ou=Users,dc=example,dc=com"
"uid=cbrunato,ou=Users,dc=example,dc=com"
E_FAIL ist wahrscheinlich ein Berechtigungsproblem. Ist die Identität der appdomain Zugriff erlaubt? Ich kann mich nicht einmal daran erinnern, dass ADS integrierte Sicherheit erlaubt, ich musste immer Netzwerkzertifikate bereitstellen. – rene
Ich fürchte ich verstehe das nicht. Ich muss zugeben, dass ich komplett neu in .NET bin. Sagen Sie, dass meine Anwendung keine Berechtigung zum Herstellen einer Verbindung zum LDAP-Server hat? –
[Diese Frage] (http://stackoverflow.com/questions/8700115/connecting-to-ldap-server-from-net) scheint nützlich, da es zeigt, wie Credential bereitzustellen, ist die Antwort relevant, weil Sie ADS verwenden . Möglicherweise müssen Sie mehr q + a auf dem [Thema] (http://stackoverflow.com/search?q=directorySearcher+networkcredential) lesen. – rene