【问题标题】:How do I construct a DirectoryEntry with both a specific domain controller and a SID for a user or group?如何为用户或组构建具有特定域控制器和 SID 的 DirectoryEntry?
【发布时间】:2017-09-02 22:53:00
【问题描述】:

我面临的情况是我需要从未加入域的 DMZ 中的 Web 服务器访问用户及其所属组的 Active Directory 属性。为此,我们的基础架构团队已经打开了到一个特定域控制器的 LDAPS 连接,我可以通过它的 DNS 名称来调用它。 (我最初使用 PrincipalContext 编写此代码,但这会生成对其他域控制器的引用查询,并且由于防火墙限制而失败,因此我将下降到较低级别的 DirectoryServices API)。

具体来说,我想要做的是向特定域控制器询问一个安全组的成员列表,该安全组的 SID 作为字符串。

我可以像这样连接到特定的域控制器来创建一个根目录条目:

var root = new DirectoryEntry("LDAP://mydc.mydomain.com");

...从那里我可以创建一个 DirectorySearcher 来按名称搜索组,如下所示:

var searcher = new DirectorySearcher(root) {
    Filter = "(&(object=(objectCategory=group)(cn=Group Name))"
}

这很好用,但我很难找到一种等效的语法来按 SID 进行搜索。我发现的大多数线程都建议使用这种基于 SID 本身直接实例化 DirectoryEntry 的语法:

new DirectoryEntry(string.Format("LDAP://<SID={0}>", sid))

...但是我找不到任何可以指定用于搜索的域控制器和要搜索的 SID 的示例。如果有人能在正确的方向上帮助我,不胜感激。

【问题讨论】:

    标签: c# active-directory ldap directoryservices


    【解决方案1】:

    我想通了:

    var root = new DirectoryEntry(string.Format("LDAP://mydc.mydomain.com/<SID={0}>", sid));
    

    【讨论】:

      猜你喜欢
      • 2017-01-16
      • 1970-01-01
      • 2011-10-28
      • 2017-04-27
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      相关资源
      最近更新 更多