【问题标题】:I do not have access to the "employeeID" attribute of the "Active Directory" users through "C#"我无权通过“C#”访问“Active Directory”用户的“employeeID”属性
【发布时间】:2019-06-03 01:55:42
【问题描述】:

我无权通过“C#”访问“Active Directory”用户的“employeeID”属性

我无权通过“C#”访问“Active Directory”用户的“employeeID”属性,我验证了用户在同一“Active Directory”的“employeeID”属性中具有值,但是代码“C#”无法访问此属性,我也使用软件“Softerra LDAP Administrator 2019.1”进行了验证,也没有显示。

事实上,我工作的客户给了我他的 VPN 以通过 Forticlient 访问他的网络,他给了我访问他的“Active Directory”的凭据,我已经成功列出了所有用户和其他一般用户特性。 ,但我无法访问“employeeID”属性。

class Program
    {
        static string ldapGeneral = "figssd.com.pe";
        static string ldapAD = "LDAP://112.128.123.18:3258/dc=figssd,dc=com,dc=pe";
        static string userAD = "saraoconner@figssd.com.pe";
        static string paswoordAD = "GDsds123";

        static void Main(string[] args)
        {
            LeerPropiedades();
            Console.WriteLine("Final");
            Console.ReadLine();
        }

        static void LeerPropiedades()
        {
            try
            {
                DirectoryEntry searchRoot = createDirectoryEntry();
                DirectorySearcher searcher = new DirectorySearcher(searchRoot, "(&(objectClass=user)(objectCategory=person))");
                searcher.PropertiesToLoad.Add("cn");
                searcher.PropertiesToLoad.Add("employeeID");
                searcher.SearchScope = SearchScope.Subtree;
                searcher.PageSize = 1000; // Setting the PageSize value to 1000 will return all objects.
                SearchResultCollection results = searcher.FindAll();

                int i = 0;

                foreach (SearchResult item in results)
                {
                    if (item.Properties["employeeID"].Count > 0)
                    {
                        Console.Write("/");
                        Console.WriteLine(Convert.ToString(item.Properties["employeeID"][0]));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error");
            }
        }
        static DirectoryEntry createDirectoryEntry()
        {
            DirectoryEntry ldapConnection = new DirectoryEntry(ldapGeneral);
            ldapConnection.Path = ldapAD;
            ldapConnection.Username = userAD;
            ldapConnection.Password = paswoordAD;
            ldapConnection.AuthenticationType = AuthenticationTypes.Secure;
            return ldapConnection;
        }
}

请知道这是否是权限问题的人?

Active Directory 属性图:

【问题讨论】:

    标签: c# active-directory ldap


    【解决方案1】:

    不知道您是否在查询全局目录?

    您通常在端口 389(用于 LDAP)和 636(用于 LDAPS)上查询域控制器。这使您可以访问域中的所有对象的所有属性。全局目录 (GC) 具有林中所有用户的属性子集,因此在林中存在多个域时非常有用。要查询 GC,请在也是全局目录服务器的域控制器上使用端口 3268(用于 LDAP)和 3269(用于 LDAPS)。

    employeeID 通常不会复制到 GC。您可以使用“Active Directory 架构”MMC 管理单元检查这一点。打开属性 Properties 并查找 Replicate this attribute to the Global Catalog。

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多