如何针对Active Directory验证用户名和密码?我只是想检查用户名和密码是否正确.
如何在C#中以编程方式获取appPool的标识?我想要应用程序池用户而不是当前登录的用户.
我有一个应用程序,其中用户对我们的 Active Directory 进行身份验证:
private bool Authenticate()
{
using (var context = new PrincipalContext(ContextType.Domain, Environment.UserDomainName))
{
return context.ValidateCredentials(this.Username.Text.Trim(), this.Password.Text.Trim());
}
}
Run Code Online (Sandbox Code Playgroud)
它工作了好几年。现在,我们的 Windows 7 机器被 Windows 10 取代,一些用户收到此错误:
服务器无法处理目录请求。
在System.DirectoryServices.Protocols.ErrorChecking.CheckAndSetLdapError(的Int32误差)
在System.DirectoryServices.Protocols.LdapSessionOptions.FastConcurrentBind()
在System.DirectoryServices.AccountManagement.CredentialValidator.BindLdap(的NetworkCredential creds,ContextOptions contextOptions)
在System.DirectoryServices.AccountManagement。 CredentialValidator.Validate(String userName, String password)
at System.DirectoryServices.AccountManagement.PrincipalContext.ValidateCredentials(String userName, String password)
at DPI.FormLogin.Authenticate() in c:\Developing\Source\DPI\Client\DPI\FormLogin .cs:第 280 行
该错误仅对某些用户出现,而不是一直出现。也许这与现在在 Win 10 上比在 Win 7 上更严格的安全设置有关。
知道如何解决吗?如何查询当前连接的 LDAP 服务器?也许我们的服务器配置略有不同,问题仅限于可能配置错误的单个服务器。