0

我正在尝试从活动目录中获取用户数据。认证过程是真的。

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返回错误的用户名或密码。

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;

我怎么解决这个问题?

4

1 回答 1

1

我认为您的问题可能源于对做什么的误解PrincipalContext.ValidateCredentials

它不会验证域上的上下文或以任何方式允许访问域,它所做的只是检查用户名和密码是否正确并返回Trueor False

相反,您可以像这样使用域进行身份验证:

var context = new PrincipalContext(ContextType.Domain, "localhost-ad.local",
    "OU=LocalOu,DC=localhost-ad,DC=local", "user.name", "password");
于 2018-07-20T10:14:30.327 回答