无法提取信息

时间:2013-08-17 12:19:25

标签: c# active-directory directoryservices

我正在尝试查询域以确定是否:

  1. 用户是有效用户(并且密码正确)
  2. 用户已启用
  3. 用户属于第x组
  4. 我的开发机器不属于此域。 我想通过我的应用程序指定用户名和密码

    我正在使用System.DirectoryServices.AccountManagement命名空间,因为这似乎是最有效的方式,但是我很难从域控制器中获取最基本的信息。

    我可以通过其他工具探索LDAP。

    首先测试是收集用户信息,下面的代码在用户上返回null。 然而,用户是有效的。

    我做错了什么?

        // set up domain context
     PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "server","CN=Users,DC=doom,DC=home", "ldapuser","password");
    
      // get user contect
     UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.Name, username);
    
     //is user locked?
     var locked = user.Enabled;
    

    更新

    定义了如下的bind方法后,我现在收到错误 “无法检索有关域名的信息(1355)。”

    var ctx = new PrincipalContext(ContextType.Domain, "server", "DC=doom,DC=home", ContextOptions.SimpleBind, "ldapuser", "password");
    

1 个答案:

答案 0 :(得分:7)

排序。

此答案解决了我在尝试连接到我不是其成员的域控制器时遇到的两个问题。

这篇文章给我的答案是: http://elegantcode.com/2009/03/21/one-scenario-where-the-systemdirectoryservices-accountmanagement-api-falls-down/

  1. 您需要在上下文中定义Bind(即ContextOptions.SimpleBind)
  2. 您必须在网络适配器DNS设置中将域服务器设置为要使用的第一个DNS服务器。
  3. 我现在可以连接到我的AD并收集数据。