我正在编写一个可以使用Windows身份进行登录身份验证而不是用户名和密码的应用程序,但是我想添加一个验证函数来确认用户名存在于本地或域的Active Directory服务中,与Outlook的不同“检查姓名”按钮。
因此,如果管理员开始创建新用户并键入mfd\john.smith
并单击“验证”,则会查看验证并允许创建用户。
虽然我可以使用 DirectorySearcher 类做到这一点,但问题在于域名。在这里,我们有一个技术上为“mfd.local”的域名,但Environment.UserDomainName
和用户名通常仅作为MFD\username
输入。当我尝试使用 DirectorySearcher 方法时,它会抛出一个异常,说“推荐是
由服务器返回“没有关于推荐的信息。
当我手动将其更改为mfd.local\username
时,搜索者可以正常工作。当我将DirectorySearcher.ReferralChasing
设置为All时,它仍然无效。
有没有办法在进行LDAP搜索时接受域名的简短版本?
答案 0 :(得分:0)
就像我找到了解决方案一样!它接受较短的域名MFD
,其中完整域名为mfd.local
。
private static bool DomainUserExists(string domain, string username)
{
try {
var context = new PrincipalContext(ContextType.Domain, domain);
var userPrincipal = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username);
return userPrincipal != null;
}
catch (Exception exc)
{
// handle if necessary
return false;
}
}