PrincipalSearcher 用户名或密码错误
PrincipalSearcher Wrong Username Or Password error
我正在尝试从活动目录中获取用户数据。认证过程为真。
var context = new PrincipalContext(ContextType.Domain, "localhost-ad.local", "OU=LocalOu,DC=localhost-ad,DC=local", ContextOptions.Negotiate);
var login = context.ValidateCredentials("user.name", "password", ContextOptions.Negotiate);
但是 PrincipalSearcher
returns 用户名或密码错误。
var user = new UserPrincipal(context);
var searcher = new PrincipalSearcher(user);
var searchResults = searcher.FindAll();
List<UserPrincipal> results = new List<UserPrincipal>();
foreach (Principal p in searchResults)
{
results.Add(p as UserPrincipal);
}
return results;
我该如何解决这个问题?
我认为您的问题可能源于对 PrincipalContext.ValidateCredentials
所做的事情的误解。
它不会验证域上的上下文或允许以任何方式访问域,它所做的只是检查用户名和密码是否正确以及 return True
或 False
.
相反,您可以像这样使用域进行身份验证:
var context = new PrincipalContext(ContextType.Domain, "localhost-ad.local",
"OU=LocalOu,DC=localhost-ad,DC=local", "user.name", "password");
我正在尝试从活动目录中获取用户数据。认证过程为真。
var context = new PrincipalContext(ContextType.Domain, "localhost-ad.local", "OU=LocalOu,DC=localhost-ad,DC=local", ContextOptions.Negotiate);
var login = context.ValidateCredentials("user.name", "password", ContextOptions.Negotiate);
但是 PrincipalSearcher
returns 用户名或密码错误。
var user = new UserPrincipal(context);
var searcher = new PrincipalSearcher(user);
var searchResults = searcher.FindAll();
List<UserPrincipal> results = new List<UserPrincipal>();
foreach (Principal p in searchResults)
{
results.Add(p as UserPrincipal);
}
return results;
我该如何解决这个问题?
我认为您的问题可能源于对 PrincipalContext.ValidateCredentials
所做的事情的误解。
它不会验证域上的上下文或允许以任何方式访问域,它所做的只是检查用户名和密码是否正确以及 return True
或 False
.
相反,您可以像这样使用域进行身份验证:
var context = new PrincipalContext(ContextType.Domain, "localhost-ad.local",
"OU=LocalOu,DC=localhost-ad,DC=local", "user.name", "password");