gpt4 book ai didi

c# - 通过 .NET 连接到 Active Directory

转载 作者:可可西里 更新时间:2023-11-01 09:37:39 25 4
gpt4 key购买 nike

我有一个带有 Active Directory 的虚拟机,我想使用 .NET 连接到它,我已经连接到运行 OpenLDAP 的 ubuntu 机器,但是当连接到 AD 时它工作不顺利。

我尝试连接的代码如下:

var directoryEntry = 
new DirectoryEntry("LDAP://192.168.1.1", @"EXAMPLE\Administrator", "Abc1234");

try
{
var test = directoryEntry.NativeObject;
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine(e.Message);
}

观察本地窗口变量 directoryEntry 的 Guid、名称等显示“函数评估超时”。

然后,当它到达 try block 时,它只是说“服务器无法运行”。

我也试过这段代码,它在“ldap.bind”处失败,告诉我“ldap-server 不可用”。

using (var ldap = new LdapConnection("192.168.1.1:389"))
{
ldap.AuthType = AuthType.Basic;
ldap.SessionOptions.ProtocolVersion = 3;
ldap.Bind(new NetworkCredential(@"EXAMPLE\Administrator", "Abc1234"));
}

我知道服务器已启动并正在运行,我知道它们有连接(机器可以相互 ping 通),但我不明白为什么它不工作。你们中的任何人都可以看到代码中是否有任何缺陷? (是的,在问这个问题之前,我已经用谷歌搜索了所有错误和关于连接到 AD 的各种问题,但没有一个解决方案有效)。

最佳答案

如果您的域名是“example.com”,假设您有一个名为“用户”的组织单位 (OU)。这对我来说非常好。

然而,运行此代码的机器已添加到 AD 域,并使用 AD 用户帐户运行。如果您没有将机器添加到您正在查询的同一域,您可以尝试“运行方式”选项(Shift + 右键单击​​)来启动程序或 visual studio。

    public static List<string> GetAllUsers()
{
List<string> users = new List<string>();

using (DirectoryEntry de = new DirectoryEntry("LDAP://OU=Users,DC=example,DC=local"))
{
using (DirectorySearcher ds = new DirectorySearcher(de))
{
ds.Filter = "objectClass=user";
SearchResultCollection src = ds.FindAll();
foreach (SearchResult sr in src)
{
using (DirectoryEntry user = new DirectoryEntry(sr.Path))
{
users.Add(new string(user.Properties["sAMAccountName"][0].ToString()));

}
}
}

}
return users;
}

关于c# - 通过 .NET 连接到 Active Directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com