2014-02-21 32 views
0

我正在编写一个应用程序,可以使用Windows身份登录身份验证,而不是用户名和密码,但我想添加验证功能以确认用户名存在本地或在域的活动目录服务,与Outlook的“检查名称”按钮不同。部分完整AD域名

因此,如果管理员开始创建新用户并键入mfd\john.smith并点击确认它看起来会执行验证并允许创建用户。

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

当我手动将其更改为mfd.local\username时,搜索器正常工作。当我将DirectorySearcher.ReferralChasing设置为全部时,它仍然不起作用。

有没有在做LDAP搜索时接受域名短版本的方法?

回答

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