【问题标题】:C# LDAP SEARCH WITHOUT BIND没有 BIND 的 C# LDAP 搜索
【发布时间】:2014-09-23 07:14:23
【问题描述】:

请问有没有LDAP C#函数可以让我在AD中进行搜索而不需要调用绑定?

我尝试使用 LDP.exe、windows GUI LDAP 工具搜索 AD,它正确返回信息,但是,由于我无权访问 AD,我不知道与绑定所需的凭据广告。

我曾尝试使用 LDIDFE.exe(Windows 命令行 LDAP 工具)来搜索 AD,它返回给我的信息包含不正确和正确的信息。有谁知道为什么?

我相信 LDP.exe 使用 C++ 函数 ldap_search_s 来执行搜索。有什么方法可以在 C# 中做到这一点?

谢谢。

【问题讨论】:

  • 如果您无权访问 LDAP,并且没有可连接的凭据 - no,那么您无法访问它。没有“魔法”功能可以让您访问......

标签: c# active-directory ldap


【解决方案1】:

如果您的程序在加入感兴趣域的计算机上运行,​​并且您只知道您的凭据而不知道任何提升的帐户,那么您至少可以枚举各种对象,例如用户帐户和安全组。

您可以使用AD powershell,或使用.net 的System.DirectoryServices NamespaceSystem.DirectoryServices.AccountManagement Namespace

System.DirectoryServices.AccountManagement Namespace 命名空间是更新、更简单和首选的方式,除非有什么你不能用它做的,那么你可以使用System.DirectoryServices Namespace

以下示例复制自this MSDN article

PrincipalContext ctx = new PrincipalContext(ContextType.Machine);

UserPrincipal usr = UserPrincipal.FindByIdentity(ctx, 
                                           IdentityType.SamAccountName, 
                                           "Guest");

if(usr != null)
{
    if (usr.Enabled == false)
        usr.Enabled = true;

    usr.Save();
    usr.Dispose();
}
ctx.Dispose(); 

【讨论】:

  • 我的电脑确实可以访问 ldap 服务器。我可以在 Windows 中使用 LDP.exe 来搜索我需要的信息,但是 ldidfe.exe 命令行功能不起作用。我在想这可能是因为 ldidfe 应用程序在搜索之前进行了绑定,而 ldp 应用程序没有。因此,我试图寻找一种方法来简单地搜索,就像 ldp.exe 应用程序使用 C# 所做的那样。有任何想法吗?谢谢。
  • @jiaming 上面的代码 C#。从 www.visualstudio.com 下载 Visual Studio Express Edition(免费)并尝试上面的链接和代码。
猜你喜欢
  • 1970-01-01
  • 2011-08-29
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
相关资源
最近更新 更多