从 .NET 连接到 LDAP 服务器

2023-12-01

我被推荐使用System.DirectoryServices.Protocols能够支持连接到 Active Directory 以外的 LDAP 服务器here.
不幸的是,我无法正确搜索该目录。我希望能够获得用户的某个属性(例如mail)。这很容易完成System.DirectoryServices命名空间通过使用DirectorySearcher班级。我怎样才能实现同样的目标System.DirectoryServices.Protocols命名空间。这是我到目前为止所拥有的:

var domainParts = domain.Split('.');
string targetOu = string.Format("cn=builtin,dc={0},dc={1}", domainParts[0], domainParts[1]);
string ldapSearchFilter = string.Format("(&(ObjectClass={0})(sAMAccountName={1}))", "person", username);

// establish a connection to the directory
LdapConnection connection = new LdapConnection(
                                new LdapDirectoryIdentifier(domain),
                                new NetworkCredential() { UserName = username, 
                                                   Password = "MyPassword" });
SearchRequest searchRequest = new SearchRequest(
                targetOu, ldapSearchFilter, SearchScope.OneLevel, new[] {"mail"});

此代码引发类型异常DirectoryOperationException有消息The object does not exist.

我怀疑我的有问题targetOu and ldapSearchFilter变量。

Thanks.


我怀疑主要问题可能是:samAccountName是严格仅限 Windows 的属性,其他 LDAP 服务器不会知道。

因此,如果您要使用非 Active Directory LDAP,则应该使用其他内容进行搜索 - 例如sn(姓氏或姓氏),givenName(名字),可能displayName.

另一个有趣的选择可能是使用 ANR(模糊名称解析)搜索 - 请参阅此SelfADSI 页面大致在中间,解释了 ANR。

使用 ANR,您可以像这样编写查询:

string ldapSearchFilter = 
   string.Format("(&(ObjectCategory={0})(anr={1}))", "person", username);

我也改变了ObjectClass to ObjectCategory有两个原因:

  • ObjectCategory是单值的,例如仅包含单个值(ObjectClass是多值的)
  • ObjectCategory通常会被索引,因此使用搜索通常会快得多ObjectCategory

这会返回您正在寻找的结果吗?

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

从 .NET 连接到 LDAP 服务器 的相关文章

  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • .NET 中是否有内置函数可以对密码进行哈希处理?

    我看到这个问题加密 散列数据库中的纯文本密码 https stackoverflow com questions 287517 encrypting hashing plain text passwords in database 我知道我
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 重载<<的返回值

    include
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • IEnumerable 与 IReadOnlyList

    选择有什么区别IEnumerable
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • 模板中的 Angular 2 主题标签是什么意思?

    我正在使用 Angular 2 我发现了类似的东西
  • 设置两个带有 QStyledItemDelegate 的验证器后,QtableView 就会崩溃

    基于这个答案Question我更进一步 基于 QStyledItemDelegate 创建了两个单独的验证器 一个用于整数 一个用于双精度 如果每个验证器是唯一的一组 则它可以完美工作 一旦我尝试设置两个验证器 每个验证器都在其单独的列中
  • Go 是否支持内置类型(如映射和切片)的运算符重载?

    在Python中 我可以通过定义来定义覆盖列表项访问和字典值访问的类型 getitem 我可以在 Go 中做类似的事情吗 What I mean is type MySlice MyItem Definition of MySlice fu
  • 如何从 firebase 检索数据,其中日期值是当前日期 1 个月前的数据

    SimpleDateFormat sdf new SimpleDateFormat dd MM yyyy HH mm Calendar c Calendar getInstance String date sdf format c getT
  • Nodejs - 将输出流式传输到浏览器

    var http require http var sys require sys var filename process ARGV 2 var exec require child process exec var com exec u
  • servlet中filter和chain有什么用?

    chain doFilter req res 我们在 servlet 程序中使用了它 我想知道这个方法有什么用doFilter 在 servlet 中 另外 Java servlet 中的过滤器和链概念有什么用 Servlet 过滤器是责任
  • 带seaborn的条形图,按行着色

    我创建了一个组合条形图 无法按行着色 我尝试了色调 颜色 调色板 库的所有组合 但没有成功 我的代码是 fig axes plt subplots 1 5 figsize 11 8 my new color UA white AA blue
  • 尽管已安装,JavaFX PieChart 工具提示仍不显示

    我尝试为 PieChart 的每个 切片 显示一个工具提示 与 Chart js 中的类似 I found 这个答案基本上试图在相同的框架中实现相同的目标 它有两个赞成票 从其他 已接受的 答案来看 这似乎也适用于其他图表类型 然而 从没有
  • 如何从 Xcode 中的 uipicker 获取所选时区的日期和时间

    我正在尝试在标签或文本字段中显示 uipicker 中选定时区的日期和时间 但我没有任何方法来解决此问题 所以请任何人帮助我 提前致谢 SelectedTimeZone 权重objectAtIndex pickerView selected
  • 为所有视图提供额外的上下文

    我正在使用 django 为我的团队构建一个项目管理网站 我的基本模板包括一个侧边栏菜单 其中包含所有项目和用户的列表 链接到DetailView分别针对该用户或项目 我的问题是我需要提供User and Project模型到每个视图 以便
  • 子边距为父边距添加边距

    如果我有以下代码怎么办 HTML section class home section section class main h1 Hello h1 section CSS代码 html body height 100 width 100
  • Freemarker/Velocity - 日期操作

    我对这两个模板引擎有一个相当简单的问题 我正在尝试确定一个未来 过去的日期 从现在开始的固定时间 例如18个月前 或者明天 我知道可以使用velocity freemarker模板中的java日期对象来做到这一点 类似于 date add
  • 如何在 C# 中将 lambda 表达式作为参数传递

    我是使用 lambda 表达式的初学者 我有一个经销商名单 我必须为每个经销商计算等级 要求是将等级计算分成单独的方法 所以我正在编写以下两个方法 但是我无法将参数传递给CalculateGrade method public IEnume
  • 如何制作 Parse.Query.AND?

    我需要用 and 连接 Parse com 中的 2 个查询 我的代码是 var queryDeseo1 new Parse Query DeseosModel queryDeseo1 equalTo User Parse User cur
  • 使用“order”属性在同级之间定位弹性项目

    我有一个包含一到三个弹性项目的弹性盒 正确的布局应该是这样的 div div h2 h2 div div 在包含的弹性框中 我有代码可以完成这项工作 请参阅this 仅当布局顺序保持不变时 我的问题是 如何有办法确保 如果标记并不总是按该顺
  • 如何在RecyclerView和ViewPager上解决捕捉功能时获取即将选择的页面

    背景 ViewPager在执行一些滚动后捕捉到视图 因此可以RecyclerView 如果你使用这样的东西 LinearSnapHelper attachToRecyclerView recyclerView 或者通过使用库捕捉到某个边缘
  • 负载平衡、AJAX 和您

    如果您是 Asp Net MVC 环境中的异步 javascript 调用 并且必须使用循环方式的负载均衡器 您能找到回家的路吗 编辑 添加说明 使用内存中会话状态 我会使用粘性会话配置负载均衡器以避免此问题 通过粘性会话 您将在会话期间一
  • 首次加载时显示的 Azure AD B2C 自定义 UI 错误标签

    我有一个 Azure AD B2C 租户 我创建了一个 默认 SignUpAndSignInPolicy 并为登录页面 注册页面和重置密码页面添加了自定义 UI 模板 一切正常 除了在注册页面和重置密码页面上 表单输入字段在初始加载时始终标
  • 合并所有其他数组 php

    数组一 1 3 5 7数组二 2 4 6 8 我想要的数组是1 2 3 4 5 6 7 8 我只是用数字作为例子 如果只是数字 我可以合并和排序 但它们将是单词 所以也许像 数组一 bob a awesome 数组二 is really d
  • 从 .NET 连接到 LDAP 服务器

    我被推荐使用System DirectoryServices Protocols能够支持连接到 Active Directory 以外的 LDAP 服务器here 不幸的是 我无法正确搜索该目录 我希望能够获得用户的某个属性 例如mail