You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断C#代码中的ActiveDirectory连接是否使用LDAP?

如何判断C# Active Directory查询是否使用LDAP?

抱歉这是个基础问题,但我负责一款执行ActiveDirectory查询的应用,被问及是否使用LDAP。我对此了解甚少,想知道如何判断。

编写这段代码的人员已离职,Domain.Value是包含Windows域名的字符串。我做了一些搜索,仅了解到LDAP是ActiveDirectory使用的协议,但不确定该特定连接是否使用LDAP,或是ActiveDirectory始终使用LDAP,问题本身是否无关?请问该如何判断?

以下是代码片段:

using (PrincipalContext AD = new PrincipalContext(ContextType.Domain, Domain.Value, UserName.Value, Password.Value))
{
    UserPrincipal u = new UserPrincipal(AD);
    PrincipalSearcher search = new PrincipalSearcher(u);

    UserPrincipal sr = (UserPrincipal)search.FindAll().
                                             Where(c => c.SamAccountName.ToLower() == UserName.Value.ToLower()).
                                             FirstOrDefault();
}

首先明确:Active Directory 底层核心依赖LDAP协议处理目录查询,你这段代码使用的是System.DirectoryServices.AccountManagement(简称S.DS.AM)这个高层封装库,它本身是基于底层的LDAP API实现的。

简单说:你这段代码间接使用了LDAP,因为S.DS.AM库在底层会通过LDAP协议与Active Directory建立通信。

你可以通过两种方式验证:

  • 抓包查看流量:用Wireshark等工具抓取应用与域控制器之间的网络流量,会看到LDAP协议的数据包(默认端口389,加密连接用636)
  • 查看底层依赖:S.DS.AM最终会调用System.DirectoryServices中的LDAP相关类,而后者就是直接与LDAP协议交互的底层组件

另外补充:Active Directory的标准目录操作几乎都是通过LDAP完成的,所以这个问题是有意义的——你的应用确实在使用LDAP,只是借助高层封装库简化了开发流程。

内容的提问来源于stack exchange,提问作者komodosp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:50:36