来自partial的完整AD域名

时间:2014-02-21 03:51:40

标签: .net active-directory

我正在编写一个可以使用Windows身份进行登录身份验证而不是用户名和密码的应用程序,但是我想添加一个验证函数来确认用户名存在于本地或域的Active Directory服务中,与Outlook的不同“检查姓名”按钮。

因此,如果管理员开始创建新用户并键入mfd\john.smith并单击“验证”,则会查看验证并允许创建用户。

虽然我可以使用 DirectorySearcher 类做到这一点,但问题在于域名。在这里,我们有一个技术上为“mfd.local”的域名,但Environment.UserDomainName和用户名通常仅作为MFD\username输入。当我尝试使用 DirectorySearcher 方法时,它会抛出一个异常,说“推荐是 由服务器返回“没有关于推荐的信息。

当我手动将其更改为mfd.local\username时,搜索者可以正常工作。当我将DirectorySearcher.ReferralChasing设置为All时,它仍然无效。

有没有办法在进行LDAP搜索时接受域名的简短版本?

1 个答案:

答案 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;
    }
}