【问题标题】:C# Active Directory LibraryC# 活动目录库
【发布时间】:2010-02-17 01:35:01
【问题描述】:

有没有人见过任何在 C# 和 asp.net 中用于处理活动目录(主要是与用户相关的东西)的可靠库。我是最好与 asp 会员集成还是构建一些定制的东西。

我查看了LINQtoAD,但它似乎不再活跃了。

【问题讨论】:

    标签: c# asp.net active-directory


    【解决方案1】:

    System.DirectoryServices 程序集和命名空间是否不足?

    【讨论】:

    • 我可以担保System.DirectoryServices
    • 确实很好用,但是直接用AD工作很痛苦。
    • +1 是我看到的第一个被接受为答案的问题。
    • @Jim:谢谢,我努力成为开拓者;)
    【解决方案2】:

    如果您使用的是 .NET 3.5,还可以查看System.DirectoryServices.AccountManagement,了解在处理主体(用户、组、计算机等)时更简单的界面。

    查看这篇 MSDN 文章作为 S.DS.AD 的精彩介绍:

    Managing Directory Security Principals in the .NET Framework 3.5

    干杯!

    【讨论】:

    • 死链接。 (多余的字符)
    【解决方案3】:

    您可以参考我的基于ActiveRecord模式的OSS项目如下(因为它是开源的,您可以了解如何使用DirectoryEntry操作AD,DirectoryEntry不仅支持LDAP协议,还支持IIS,WIN等,所以我开发了这个库):

    例如:更新用户 AD 对象。

    using (var userObject = UserObject.FindOneByCN(this.ADOperator, “pangxiaoliang”))
    {
         if(userObject.Email == "example@landpy.com")
         {
              userObject.Email = "mv@live.cn";
              userObject.Save();
         }
    }
    

    例如:查询用户AD对象。

    // 1. CN end with "liu", Mail conatains "live" (Eg: mv@live.cn), job title is "Dev" and AD object type is user.
    // 2. CN start with "pang", Mail conatains "live" (Eg: mv@live.cn), job title is "Dev" and AD object type is user.
                IFilter filter =
                    new And(
                        new IsUser(),
                        new Contains(PersonAttributeNames.Mail, "live"),
                        new Is(PersonAttributeNames.Title, "Dev"),
                        new Or(
                                new StartWith(AttributeNames.CN, "pang"),
                                new EndWith(AttributeNames.CN, "liu")
                            )
                        );
    // Output the user object display name.
    foreach (var userObject in UserObject.FindAll(this.ADOperator, filter))
    {
        using (userObject)
        {
            Console.WriteLine(userObject.DisplayName);
        }
    }
    

    例如:自定义查询。

    IFilter filter =
        new And(
            new IsUser(),
            new Custom("(!userAccountControl:1.2.840.113556.1.4.803:=2)")
            );
    // Output the user object display name.
    foreach (var userObject in UserObject.FindAll(this.ADOperator, filter))
    {
        using (userObject)
        {
            Console.WriteLine(userObject.DisplayName);
        }
    }
    

    https://landpyactivedirectory.codeplex.com/documentation

    你会发现用它操作AD很容易,如果你对它不感兴趣,请忽略我的回答。任何关于 AD 的问题请联系我:)

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 2019-05-20
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多