我正在使用 DirectoryEntry/DirectorySearcher 进行 LDAP 查询,以通过 C# Web 应用程序对 Active Directory 中的用户进行身份验证(ConnectionString 属性仅相当于 LDAP://server.domain):
internal bool AuthenticateUser(string username, string password)
{
if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
return false;
var entry = new DirectoryEntry(this.ConnectionString, username, password);
var searcher = new DirectorySearcher { SearchRoot = entry, Filter = "(objectclass=user)" };
try
{
var result = searcher.FindOne();
return true; //connection to AD succeeded, authentication was successful
}
catch (DirectoryServicesCOMException)
{
return false; //impersonating the user failed
}
}
这些查询都针对 SBS 服务器,当您创建新用户时,该服务器似乎使用大写值作为 Windows 2000 之前的名称(即 NetBIOS)。因此,如果我添加一个名为“Test User”的新用户,用户名可能是“tuser”,但它指定的 NetBIOS 名称是“TUser”。当用户输入命中此方法的用户/通行证时,“tuser”无法通过身份验证,而“TUser”成功。
我的问题是是否可以修改它以使用户名不必区分大小写?