我正在尝试使用 .NET 中的 LDAP 创建一个简单的身份验证系统。 我正在检查 .NET 中的一些命名空间,并简单地制作如下标准代码片段。
DirectoryEntry de = new DirectoryEntry(path,username,password);
DirectorySearcher s = new DirectorySearcher(de);
s.Filter = "(&(cn=" + username2 + "))";
SearchResult result = s.FindOne();
if (result != null) {
Console.WriteLine("User exists");
} else {
Console.WriteLine("User does not exist");
}
我有一个管理员用户名和密码,username
和 password
,我用它来验证客户端应用程序。我有第二个用户名和密码,username2
和 password2
需要在 LDAP 中检查才能登录。
username
是管理员帐户,username2
只是 LDAP 中的一个用户。那么如何查看username2
的密码呢?
最佳答案
一种稍微倒退(且笨拙)的方法是以用户身份登录并尝试检索某些内容,然后将异常视为无效密码:
static bool CheckUser(string userName, string password)
{
var adSettings = ConfigurationManager.ConnectionStrings["ActiveDirectory"];
if (adSettings == null ||
string.IsNullOrWhiteSpace(adSettings.ConnectionString))
{
return false;
}
try
{
using (var de = new DirectoryEntry(adSettings.ConnectionString, userName, password))
{
// This should throw an exception if the password is wrong
object nativeObject = de.NativeObject;
}
}
catch (DirectoryServicesCOMException)
{
// Wrong password
return false;
}
catch (System.Runtime.InteropServices.COMException)
{
// Can't connect
return false;
}
return true;
}
关于c# - 如何在 LDAP 中进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14361021/