2016-10-04 13 views
0

Ich habe ein ASP.NET MVC-Projekt mit LDAP zur Authentifizierung von Benutzern. Auf dem Entwicklungsserver funktioniert die Authentifizierung, aber in der Produktion funktioniert es nicht.LDAP - kann nicht auf das Verzeichnis zugreifen

Ich hatte das Projekt vor der Produktion bereitgestellt, es gibt kein Problem mit dem LDAP. Dann habe ich erneut implementiert, aber ich habe das gesamte Paket im NuGet Package Manager vor der Bereitstellung aktualisiert. Aber es funktioniert nicht.

Bevor ich das neue Projekt mit dem aktualisierten Paket implementiert habe, habe ich es bereits im Entwicklungsserver getestet, nichts passiert schief. Das Problem ist, dass ich nicht auf den LDAP-Pfad im Produktionsserver zugreifen kann. Hier

ist der <appSettings> Abschnitt:

<appSettings> 
    <add key="FolderPath" value="Files/" /> 
    <add key="DirectoryPath" value="LDAP://blabla.bla.bla:389/CN=Users,DC=blabla,DC=bla,DC=bla" /> 
    <add key="DirectoryDomain" value="bla" /> 
    <add key="UserPermission" value="blabla" /> 
</appSettings> 

Hier ist der Authentifizierungscode

public bool AuthenticateUser(string domain, string username, string password, string LdapPath, string userPermission) 
{   
    string domainAndUsername = domain + @"\" + username; 

    DirectoryEntry entry = new DirectoryEntry(LdapPath, domainAndUsername, password); 

    try 
    { 
     Object obj = entry.NativeObject; 

     DirectorySearcher search = new DirectorySearcher(entry); 
     search.Filter = "(SAMAccountName=" + userPermission + ")"; 
     search.PropertiesToLoad.Add("cn"); 

     SearchResult result = search.FindOne(); 

     if (null == result) 
     { 
      return false; 
     } 

     LdapPath = result.Path; 
     string _filterAttribute = (String)result.Properties["cn"][0]; 

     if (_filterAttribute != userPermission) 
      return false; 
    } 
    catch (Exception ex) 
    { 
     return false; 
     throw new Exception("Error authenticating user. " + ex.Message); 
    } 

    return true; 
} 

Der einzige Unterschied Einstellungen zwischen Entwicklung und Produktion sind die DirectoryPath und UserPermission Werte.

Sorry für mein schlechtes Englisch.

Vielen Dank.

+0

Was ist der Fehler, den Sie erhalten, wenn Sie es ausführen? – A3006

+0

@Anand Entschuldigung, ich habe den Fehler im Produktionsserver nicht protokolliert. Ich denke, dass das Problem in DirectoryEntry ist, weil ich versuchte, mich 3mal auf dem neuen Projekt einzuloggen, dann ändere ich das Projekt zu dem alten und logge mich wieder ein, dann funktioniert es. Ich mache das, weil ich sehen möchte, ob DirectoryEntry in dem neuen Projekt übergeben wird, denn wenn ich 3 mal falschen Pass in LDAP eingib, wird das Konto gesperrt, so dass ich mich nicht einloggen kann, auch wenn ich das Projekt auf das neue ändere. Ich hoffe, Sie verstehen. Vielen Dank. – TeachMe

Antwort

0

Dumb Frage zuerst, sind Dev und Produktionsserver mit dem gleichen DNS?
Wenn nicht, kann "blabla.bla.bla" durch den vom Produktionsserver verwendeten DNS aufgelöst werden (versuchen Sie einfach ping "blabla.bla.bla")?

Wenn DNS den Namen nicht auflösen kann, wird keine Verbindung hergestellt.

Verwandte Themen