LDAP - 无法访问目录

时间:2016-10-04 04:03:08

标签: c# model-view-controller ldap directoryservices

我有一个使用LDAP来验证用户的ASP.NET MVC项目。在开发服务器上,身份验证正在运行,但在生产中它无法正常工作。

我在生产之前部署了项目,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;
}

开发和生产之间唯一不同的设置是DirectoryPathUserPermission值。

抱歉我的英语不好。

谢谢。

1 个答案:

答案 0 :(得分:0)

首先是愚蠢的问题,dev和生产服务器使用相同的DNS吗? 如果没有,生产服务器使用的DNS可以解决“blabla.bla.bla”(只需尝试ping“blabla.bla.bla”)吗?

如果DNS无法解析名称,则无法连接。