代码之家  ›  专栏  ›  技术社区  ›  Wallstreet Programmer

在全局编录中对用户进行身份验证

  •  2
  • Wallstreet Programmer  · 技术社区  · 15 年前

    var domains = System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest().Domains;
    

    但是,我们也有属于林外域的用户。但是,我可以从全局目录(GC)中访问它们。下面的代码允许我获取用户ID的目录条目。

    System.DirectoryServices.DirectoryEntry globalCatalogDE = new System.DirectoryServices.DirectoryEntry("GC://DC=nsroot,DC=net");
    var ds = new System.DirectoryServices.DirectorySearcher(globalCatalogDE);
    ds.Filter = "(&(objectClass=user)(sAMAccountName=" + userId + "))";
    System.DirectoryServices.DirectoryEntry userDE = ds.FindAll()[0].GetDirectoryEntry();
    

    如何对属于我无法直接访问但在GC中可用的域的用户进行身份验证?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Per Noalt    15 年前

    您不能通过查看全局编录来验证用户,它仅用于搜索(任何标记为 isMemberOfPartialAttributeSet 在模式中,每个域都复制到GC)。

    密码不会复制到它;否则,您将在每个域控制器上拥有整个forrest中所有用户的密码,这从安全和复制的角度来看是非常糟糕的。您需要建立到存储用户凭据的域的连接(即需要访问LDAP端口389或636)。