2016-10-04 12 views
0

У меня есть проект ASP.NET MVC с использованием LDAP для аутентификации пользователей. На сервере разработки аутентификация работает, но в производстве она не работает.LDAP - не удается получить доступ к каталогу

Я развернул проект до производства, проблем с LDAP нет. Затем я снова развернулся, но перед развертыванием я обновил весь пакет в диспетчере пакетов NuGet. Но это не работает.

Прежде чем я развернул новый проект с обновленным пакетом, я уже тестировал его на сервере разработки, ничего не случилось. Кажется, проблема в том, что я не могу получить доступ к LDAP-пути на рабочем сервере.

Вот <appSettings> раздел:

<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> 

Вот код аутентификации

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

Единственные настройки разницы между разработкой и производством является DirectoryPath и UserPermission значения.

Извините за мой плохой английский.

спасибо.

+0

Какая ошибка возникает при ее выполнении? – A3006

+0

@ И, простите, я не зарегистрировал ошибку на рабочем сервере. Я думаю, проблема в DirectoryEntry, потому что я попытался войти 3 раза в новый проект, а затем я изменил проект на старый и снова зашел, а затем он работает. Я делаю это, потому что хочу увидеть, передана ли DirectoryEntry в новом проекте, потому что, если я ввожу неверный пароль 3 раза в LDAP, учетная запись будет заблокирована, поэтому я не могу войти в систему, даже если я изменю проект на новый. Надеюсь, вы понимаете. Благодарю. – TeachMe

ответ

0

Глупый вопрос, прежде всего, являются dev и производственным сервером, использующим тот же DNS?
Если нет, можно ли «blabla.bla.bla» разрешить DNS, используемый производственным сервером (просто попробуйте ping «blabla.bla.bla»)?

Если DNS не может разрешить имя, он не сможет подключиться.