Buz*_*uzz 2 c# authentication ldap
我们使用以下DirectoryEntry构造函数来验证AD上的用户:
new DirectoryEntry(path, domainName + "\\" + UserName, Password);
Run Code Online (Sandbox Code Playgroud)
在域控制器更改之前,它可以正常工作.
现在要使它工作,我们必须使用:
new DirectoryEntry(path, UserName, Password);
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释差异,为什么第二种方法现在工作,第一种方法不起作用?
注意:我不确定,但我认为从Server 2003提升到Server 2008的域功能级别.它有所不同吗?
我不知道为什么这个有用了:-)因此我无法解释为什么其他选项现在有效....
如果您使用的是.NET 3.5,则可以使用System.DirectoryServices.AccountManagement
命名空间并轻松验证您的凭据:
// create a "principal context" - e.g. your domain (could be machine, too)
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"))
{
// validate the credentials
bool isValid = pc.ValidateCredentials("myuser", "mypassword")
}
Run Code Online (Sandbox Code Playgroud)
它很简单,可靠,它是你的100%C#托管代码 - 你还能要求什么?:-)