通过 LDAP 连接到 Active Directory

2024-02-25

我想使用 C# 连接到我们的本地 Active Directory。

我发现了这个很好的文档 http://ianatkinson.net/computing/adcsharp.htm.

但我真的不知道如何通过 LDAP 连接。

你们有人能解释一下如何使用所要求的参数吗?

示例代码:

  static DirectoryEntry createDirectoryEntry()  
  {  
     // create and return new LDAP connection with desired settings  

     DirectoryEntry ldapConnection     = new DirectoryEntry("rizzo.leeds-art.ac.uk");  
     ldapConnection.Path               = "LDAP://OU=staffusers,DC=leeds-art,DC=ac,DC=uk";  
     ldapConnection.AuthenticationType = AuthenticationTypes.Secure;  
     return ldapConnection;  
  }  

我只有 Active Directory 服务器的主机名和 IP 地址。什么是DC=xxx,DC=xx等等意思?


DC 是您的域。如果您想连接到域 example.com,则您的 dc 为:DC=example,DC=com

实际上,您不需要域控制器的任何主机名或 IP 地址(可能有很多)。

想象一下您正在连接到域本身。因此,要连接到域 example.com,您可以简单地编写

DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");

你就完成了。

您还可以指定用于连接的用户和密码:

DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com", "username", "password");

另请确保始终以大写形式书写 LDAP。我遇到了一些麻烦和奇怪的异常,直到我在某处读到我应该尝试用大写写它,这解决了我的问题。

The directoryEntry.Path财产可以让您更深入地了解您的领域。因此,如果您想搜索特定 OU(组织单位)中的用户,您可以在那里进行设置。

DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");
directoryEntry.Path = "LDAP://OU=Specific Users,OU=All Users,OU=Users,DC=example,DC=com";

这将匹配以下 AD 层次结构:

  • com
    • example
      • Users
        • All Users
          • 特定用户

只需从最深到最高写出层次结构即可。

现在你可以做很多事情 http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C

例如,按帐户名搜索用户并获取用户的姓氏:

DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");
DirectorySearcher searcher = new DirectorySearcher(directoryEntry) {
    PageSize = int.MaxValue,
    Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=AnAccountName))"
};

searcher.PropertiesToLoad.Add("sn");

var result = searcher.FindOne();

if (result == null) {
    return; // Or whatever you need to do in this case
}

string surname;

if (result.Properties.Contains("sn")) {
    surname = result.Properties["sn"][0].ToString();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 LDAP 连接到 Active Directory 的相关文章

  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 新的CSS样式声明

    我正在尝试使用浏览器的内置类型CSSStyleDeclaration以编程方式传递和修改样式 这很方便 因为 cssText财产 然而 new CSSStyleDeclaration 抛出一个Illegal Constructor错误 所以
  • Gradle 以非零退出值 1 完成

    我刚刚在 libgdx 中生成了一个项目并导入到 eclipse 编译了一些依赖项 现在我得到了 Error Gradle Execution failed for task android compileDebugAidl com and
  • 如何选择自动完成下拉列表中的第一个元素

    如果没有元素 任何人都可以帮助我如何选择自动完成下拉列表的第一个元素 被选中 我尝试使用自动对焦 为键盘事件工作 如果我使用鼠标 第一个元素不会选择自动聚焦的元素 visit here https stackoverflow com a 9
  • 在 Swift 中使用 NSURL 读取文本文件

    我想读取并显示位于 URL 的文本文件的内容 我正在为 Yosemite 编写 Mac 应用程序 我需要使用 Swift 但我坚持这样做 这是我的代码 let messageURL NSURL string http localhost 8
  • 任务并行库 INotifyPropertyChanged 不抛出异常?

    我有一个 wpf 项目 我在绑定到文本框的属性上使用 INotifyPropertyChanged 我正在使用任务 TaskParallelLibrary 在不同的线程上更新此值 它已正确更新并且不会引发异常 我认为它会抛出异常 因为它是在
  • Angular 4 - Http 请求错误:您在需要流的地方提供了“未定义”

    在尝试执行 HTTP Post 请求时 我收到以下错误 auth service ts c694 156 请求新的时出错 密码 错误消息 您在流所在位置提供了 未定义 预期的 您可以提供 Observable Promise Array 或
  • 如何使用uiwebview显示一些网页?

    如何使用 uiwebview 显示某个 url 请求的网页 我不知道该怎么做 谁能告诉我该怎么做 有开源的吗 谢谢 NSString urlAddress http www google com NSURL url NSURL URLWit
  • 如何更加重视机器学习中的某些特征?

    如果使用像 scikit learn 这样的库 如何为 SVM 这样的分类器的输入中的某些特征分配更多权重 这是人们做还是不做的事 首先 你可能不应该这样做 机器学习的整个概念是使用统计分析分配最佳权重 你在这里干扰了整个概念 因此你需要非
  • 将列表传递给 Tcl 过程

    将列表传递给 Tcl 过程的规范方法是什么 如果我能得到它 以便列表自动扩展为可变数量的参数 我真的很喜欢它 所以像这样 set a b c myprocedure option1 option2 a and myprocedure opt
  • 在 IE 和 Chrome 中上传之前预览图像

    我正在尝试设计一个模块 在用户将图像上传到数据库之前 我想在其中向用户显示图像的预览 我找到了一个适用于 Firefox 但不适用于 IE 和 Chrome 的解决方案 有人可以帮助我吗 这是我的代码 function imageURL i
  • 这个空白隐藏在哪里?

    我有一个字符向量 它是一些 PDF 抓取的文件pdftotext 命令行工具 一切都 幸福地 排列得很好 然而 该向量充满了一种空白类型 无法使用正则表达式 gt test 1 Address Clinic Information Stor
  • whereis python 和 python --version 之间的矛盾

    在一个 Python 环境中 我输入whereis python 并得到以下信息 python usr bin python2 6 usr bin python2 6 config usr bin python usr lib python
  • 如何通知用户NPM包版本更新?

    我用 Node JS 编写了一个 CLI 工具并发布到NPM https www npmjs com package rapid react 每次在终端中运行时 我都需要通知用户可用的新版本及其类型 补丁 次要 主要 以便他 她可以相应地更
  • 如何计算时间复杂度为 O(n log n) 的 XOR(二元)卷积

    是按位异或运算 我认为Karatsuba算法可能可以解决该问题 但是当我尝试在Karatsuba算法中使用XOR代替 时 很难得到子问题 The 卷积定理 https en wikipedia org wiki Convolution th
  • 为什么在 Python 中处理已排序数组并不比处理未排序数组快?

    在这篇文章中为什么处理排序数组比处理随机数组更快 https stackoverflow com questions 11227809 why is processing a sorted array faster than an unso
  • flink kafka生产者在检查点恢复时以一次模式发送重复消息

    我正在写一个案例来测试 flink 两步提交 下面是概述 sink kafka曾经是kafka生产者 sink stepmysql接收器是否扩展two step commit sink comparemysql接收器是否扩展two step
  • 如何构建多部分 MIME 请求并使用 AngularJS 的 $http 方法 POST 它?

    如何构建多部分 MIME 请求并使用 AngularJS http 方法将其 POST 到服务器 API 我正在尝试将图像上传到服务器 图片的二进制数据应该是body使用 POST 方法和多部分 MIME 完成请求 其余查询参数可以作为查询
  • 使用简单 Json 库提取 JSON 数组

    我的 JSON 数据如下所示 Users Username Admin1 Password 123 Username Admin2 Password 456 Username Admin3 Password 789 我正在尝试提取所有用户名
  • Java:如何从线程返回中间结果

    使用Java 7我正在尝试构建一个监视数据存储 某些集合类型 的观察程序 然后在某些点从其中返回某些项目 在本例中 它们是时间戳 当时间戳经过当前时间时 我希望将其返回到起始线程 请参阅下面的代码 Override public void
  • 通过 LDAP 连接到 Active Directory

    我想使用 C 连接到我们的本地 Active Directory 我发现了这个很好的文档 http ianatkinson net computing adcsharp htm 但我真的不知道如何通过 LDAP 连接 你们有人能解释一下如何