我们有一个使用 c#(VS 2008/3.5 框架)开发的 Web 应用程序。该应用程序使用“Windows”身份验证模式,并使用域 (Domain1) 中存在的服务帐户以 ASP.Net 用户身份运行应用程序。我们要对存在于不同域(域 2)中的用户进行身份验证。使用目录服务(目录搜索器)完成身份验证后,我们可以连接到 domain1 的 LDAP 并绑定它,以便对用户进行身份验证。此外,如果用户已从 domain1 迁移到 domain 2,则用户可以进行身份验证。但是,如果在 domain 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 身份验证期间抛出异常:未知用户名或错误密码。