2016-10-04 9 views
0

LDAPを使用してユーザーを認証するASP.NET MVCプロジェクトがあります。開発サーバー上では、認証は機能していますが、運用環境では機能していません。LDAP - ディレクトリにアクセスできない

私はプロダクションに先立ってプロジェクトを展開していましたが、LDAPに問題はありません。その後、私はもう一度デプロイしましたが、デプロイメントの前にNuGet Package Managerのすべてのパッケージを更新しました。しかし、それは動作していません。

私はすでに開発サーバーでそれをテストした更新パッケージで新しいプロジェクトをデプロイする前に、何も間違っていません。問題はプロダクションサーバーの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> 

ここで開発と生産の間の唯一の違い設定がDirectoryPathUserPermission値である認証コード

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

あります。

私の悪い英語を申し訳ありません。

ありがとうございます。

+0

実行時に発生するエラーは何ですか? – A3006

+0

@Anand申し訳ありませんが、プロダクションサーバーでエラーを記録しませんでした。私は問題がDirectoryEntryにあると思います。新しいプロジェクトで3回ログインしようとしたので、プロジェクトを古いものに変更して再度ログインしてから動作します。 LDAPで3回間違ったパスを入力すると、アカウントがロックされ、プロジェクトを新しいものに変更してもログインできなくなるため、DirectoryEntryが新しいプロジェクトに渡されているかどうかを確認したいからです。ご理解頂けるとありがたいです。ありがとう。 – TeachMe

答えて

0

最初に、devとプロダクションサーバは同じDNSを使用していますか?
"blabla.bla.bla"はプロダクションサーバーで使用されているDNSによって解決できます(単に "blabla.bla.bla"にpingを実行してください)?

DNSが名前を解決できない場合、接続に失敗します。

関連する問題