使用 C# 获取 Active Directory 用户数据

2024-04-21

我想获取有关特定用户的数据。我知道该用户的 OU 路径,但无法使用该 OU 路径获取信息。总是说找不到用户。谁能告诉我我需要更改搜索过滤器吗?请帮忙 。

Code

用户路径 abc.ds.xyz.net/fGroup/xcxc/Users/123456 abc.ds.xyz.net 是域,然后 fGroup 是 OU ,xcxc 是 OU ,用户是 OU ,123456 是 cn 。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.DirectoryServices;
    using System.DirectoryServices.AccountManagement;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Drawing;
    using System.Windows.Forms;

    namespace Ldap_authentication
    {
       public class Program
       {
         static void Main(string[] args)
         {

            Console.Write("Enter user: ");
            String username = Console.ReadLine();

            try
            {
              DirectoryEntry myLdapConnection = createDirectoryEntry();

              DirectorySearcher search = new DirectorySearcher(myLdapConnection);
              search.Filter = "(&(OU=fGroup)(OU=xcxc )(OU=Users)(cn=" + username + "))";
              SearchResult result = search.FindOne();

              if (result != null)
              {

                ResultPropertyCollection fields = result.Properties;

                foreach (String ldapField in fields.PropertyNames)
                {

                    foreach (Object myCollection in fields[ldapField])
                        Console.WriteLine(String.Format("{0,-20} : {1}",
                                      ldapField, myCollection.ToString  ()));
                }
             }

             else
             {
                // user does not exist  
                Console.WriteLine("User not found!");
                Console.ReadLine();
             }
         }

        catch (Exception e)
        {
            Console.WriteLine("Exception caught:\n\n" + e.ToString());
             Console.ReadLine();
        }


    }
    static DirectoryEntry createDirectoryEntry()
    {
        DirectoryEntry ldapConnection = new DirectoryEntry("abc.ds.xyz.net");
        ldapConnection.Path = "LDAP://DC=abc,DC=ds,DC=xyz,DC=net";
        ldapConnection.AuthenticationType = AuthenticationTypes.Secure;
        return ldapConnection;
    }
   }
  }

EDIT

    search.Filter = "(&(OU=fGroup))";
    SearchResult result = search.FindOne();

当我更改 search.Filter = "(&(OU=fGroup)(OU=xcxc )(OU=Users)(cn=" + username + "))";进入 search.Filter = "(&(OU=fGroup))";我得到结果了。谁能告诉我如何使用多个搜索输入过滤器进行搜索。


在我的头撞在墙上几个小时后,我终于找到了答案。我需要编写多个搜索过滤器,例如

旧代码 search.Filter = "(&(OU=fGroup))";用这个替换这个

   search.Filter = "(&(OU=fGroup))";
   search.Filter = "(&(OU=xcxc))";
   search.Filter = "(&(OU=Users))";
   search.Filter = "(&(cn=" + username + "))";
   SearchResult result = search.FindOne();

   Finally found my answer :) . Happy Coding guys :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 获取 Active Directory 用户数据 的相关文章

随机推荐

  • Powershell 以块的形式读取文件

    我有一个用 Powershell 编写的脚本 它通过 FTP 传输文件 使用以下命令可以正常工作 content System IO File ReadAllBytes backup app data 但是 一旦文件大小达到 2Gb 此方法
  • 标题正确,但 Chrome 显示“资源解释为文档”

    我读了很多这样的问题 但我真的无法弄清楚 我用archiver https www npmjs com package archiver and express https www npmjs com package expressNode
  • 如果电子邮件/密码输入错误,无法显示错误消息

    如果电子邮件 密码输入错误 我希望出现一个消息框 我正在使用 else 语句 但如果登录不正确 它不会显示消息 MyConn New OleDbConnection MyConn ConnectionString connString My
  • 删除 ThreadPoolExecutor 的所有排队任务

    我有一个相当简单的问题线程池执行器 http java sun com javase 6 docs api java util concurrent ThreadPoolExecutor html 我遇到以下情况 我必须使用队列中的对象 为
  • DynamoDB:键及其含义

    我对如何使用 DynamoDB 表键感到困惑 该文档提到了 HASH 似乎也称为分区 键和 RANGE 或排序 键 我试图将这些与我之前对数据库索引理论的理解大致保持一致 我目前主要基于猜测的理解是 HASH 键本质上是主键 它必须是唯一的
  • Spring 部分更新对象数据绑定

    我们正在尝试在 Spring 3 2 中实现一个特殊的部分更新功能 我们使用 Spring 作为后端 并有一个简单的 Javascript 前端 我无法找到满足我们要求的直接解决方案 即update 函数应该接受任意数量的 field va
  • 我可以在乳胶文档的标题中使用 knitr 内联表达式吗?

    我想使用 Knit Sweave 内联调用 Sexpr 在 LaTeX 文档的标题中 在 begin document 命令之后但在 maketitle 命令之前 内联 R 代码将从我嵌入 LaTeX 的 R 脚本早期创建的 R 数据帧中提
  • sqlite只支持1笔交易?

    在使用 ADO NET 时 也许我错了 我不知道它叫什么 我注意到我只能通过连接开始事务 并且命令似乎有 command Transaction 获取事务数据但不启动事务本身 实际上 在查看时我在 System Data SQLite 中看
  • typeid 运算符的奇怪行为?

    使用 XCode 3 2 3 64 位 我得到以下奇怪的输出 我究竟做错了什么 include
  • Willpopscope 无法在 Web 上拦截浏览器后退按钮

    我尝试过拦截网络上的后退按钮 但它不会被触发 我怎样才能让它发挥作用 WillPopScope onWillPop print will pop on web Get offNamed orders return new Future gt
  • grunt-wiredep 对具有不同依赖关系的多个文件

    目前的项目结构有点像这样 index html bower json bower components 建议的项目结构将在项目根目录中添加更多静态 html 文件 到目前为止 我一直在管理 Bower json 中的所有前端依赖项 并使用
  • 在多个自定义模块支持的多个脚本中使用 python 的 argparse

    我正在构建一组用于管理我们的基础设施的脚本和模块 为了让事情井井有条 我想整合尽可能多的努力 并尽量减少新脚本的样板代码 特别是这里的问题是整合 ArgumentParser 模块 一个示例结构是让脚本和库组织如下 bin script1
  • 如何在 C++ 中调用不同项目的方法?

    使用 Visual Studio 时 我通常使用 C 工作 因此 C 中的某些内容让我感到困惑 概念看起来如此不同 但名称几乎相同 我创建了一个控制台项目 我想在其中运行另一个项目以进行测试 我将该项目添加为控制台应用程序的引用 然后陷入困
  • 如何将图像文件从文档目录上传到iphone中的php服务器

    我目前正在开发画廊类的 iPhone 应用程序 根据我的要求 我需要将所有相机捕获的图像存储到文档目录中 文档文件夹中有一些 10 20 个图像文件 之后我必须使用单个 php url 将应用程序资源文档文件夹推送到服务器上 我已附加屏幕截
  • C# 中的省略号表示法?

    我在哪里可以获得有关实现我自己的带有省略号符号的方法的信息 e g static void my printf char format 这也是所谓的省略符号还是有一个更奇特的名字 看看参数关键字 https learn microsoft
  • 多边形来自折线?

    我正在尝试自动从折线创建多边形 到目前为止 我一直在正确计算折线每个部分的外推边 条件 基线和边之间的距离是常数 如何从基点 红色点 计算边 蓝色点 的角点 这是我在 Qt 中的代码 这对我来说很好用 QPolygonF projectPL
  • 使用 BeautifulSoup 抓取网页中的链接标题和 URL

    我有一个流行文章的网页 我想抓取每个引用网页的超链接及其所显示文章的标题 我的脚本所需的输出是一个 CSV 文件 其中在一行中列出了每个标题和文章内容 因此 如果该网页上有 50 篇文章 我想要一个包含 50 行和 100 个数据点的文件
  • Hibernate - 限制嵌套集合的大小

    我有以下型号 Entity Data public class Book Id GeneratedValue strategy GenerationType IDENTITY private Long id private String a
  • SwiftUI macOS 在文本字段处于活动状态时使用箭头键滚动列表

    我想使用 SwiftUITextField https developer apple com documentation swiftui textfield和一个 SwiftUIList https developer apple com
  • 使用 C# 获取 Active Directory 用户数据

    我想获取有关特定用户的数据 我知道该用户的 OU 路径 但无法使用该 OU 路径获取信息 总是说找不到用户 谁能告诉我我需要更改搜索过滤器吗 请帮忙 Code 用户路径 abc ds xyz net fGroup xcxc Users 12