使用c#中的目录搜索器进行LDAP用户身份验证

时间:2013-01-11 10:46:56

标签: c# asp.net active-directory

我们使用c#(VS 2008 / 3.5框架)开发了一个Web应用程序。应用程序将身份验证模式用作“Windows”,域(Domain1)中存在服务帐户,以ASP.Net用户身份运行应用程序。我们要为不同域(域2)中的用户进行身份验证。使用目录服务(目录搜索器)完成身份验证时,我们可以连接到domain1的LDAP并绑定它,以便对用户进行身份验证。此外,如果用户已从domain1迁移到域2,则可以对用户进行身份验证。但是,如果在域2中直接创建了用户ID,则应用程序无法绑定到Domain2(在LDAP身份验证期间)因此,该用户未被应用程序验证。请提出相同的解决方案。

<authentication mode="Windows"/>
<identity impersonate="true" userName="domain1\svc_acc" password="***"/>

public bool ValidateUidPwdAndGetUserTypeGlobal(string TPXId, string password)
        {

            string strADPath = "LDAP://a.b.c/dc=a,dc=b,dc=c";
            try
            {
                DirectoryEntry objDirEntry = new DirectoryEntry(strADPath, TPXId, password);

                DirectorySearcher search = new DirectorySearcher(objDirEntry);
                search.Filter = "(samaccountname=" + TPXId + ")";
                SearchResult result = search.FindOne();
                if (null == result)
                {
                    return false;
                }
                else
                    return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }

LDAP身份验证期间抛出异常:未知用户名或密码错误。

1 个答案:

答案 0 :(得分:0)

您正在尝试跨域身份验证

How does Authentication Work Cross Domain?阅读文章。它将为您提供如何解决问题的提示。