C# 我应该使用域名或域控制器名称绑定到Active Directory吗? 我正在研究一个应用程序,它通过LDAP提供程序,使用C++和C++来与ActiveDirectory对话。该应用程序在Windows 2003、2008和2008 R2上运行。我使用的绑定字符串如下所示:
C# 我应该使用域名或域控制器名称绑定到Active Directory吗? 我正在研究一个应用程序,它通过LDAP提供程序,使用C++和C++来与ActiveDirectory对话。该应用程序在Windows 2003、2008和2008 R2上运行。我使用的绑定字符串如下所示:,c#,windows,active-directory,ldap,C#,Windows,Active Directory,Ldap,LDAP://mydomain.com/CN=Fred,DC=mydomain,DC=com LDAP://server.mydomain.com/CN=Fred,DC=mydomain,DC=com 应用程序负责目录中的读写操作。例如,在一个场景中,它创建一个新的OU,然后在该新OU中创建多个用户和组。在另一个场景中,它向交互用户显示目录视图,并允许用户创建新的组或用户帐户 到目前为止,根据以下建议,我一直在使用基于域的绑定(上面的第一个绑定字符串示例): 在大多数情况下,绑定不应该不必要地绑
LDAP://mydomain.com/CN=Fred,DC=mydomain,DC=com
LDAP://server.mydomain.com/CN=Fred,DC=mydomain,DC=com
应用程序负责目录中的读写操作。例如,在一个场景中,它创建一个新的OU,然后在该新OU中创建多个用户和组。在另一个场景中,它向交互用户显示目录视图,并允许用户创建新的组或用户帐户
到目前为止,根据以下建议,我一直在使用基于域的绑定(上面的第一个绑定字符串示例):
在大多数情况下,绑定不应该不必要地绑定到单个服务器。Active Directory域服务支持无服务器绑定,这意味着可以将Active Directory绑定到默认域,而无需指定域控制器的名称
当域上有多个域控制器时,就会出现问题;我现在就叫他们左撇子和右撇子。如果我使用LDAP://mydomain.com/blah
绑定到目录,我将隐式连接到Lefty或Righty。下面是发生的情况的示例场景:
IADs
或DirectoryEntry
。在内部,我认为Active Directory guts是用来选择与哪个服务器对话的,关于它如何选择域控制器以及如何缓存该信息的文档也有一些讨论。不幸的是,据我所知,应用程序并不能真正控制它。在某些情况下,我看到应用程序始终连接到一个域控制器或另一个域控制器,但在其他情况下,应用程序似乎在域控制器之间来回切换(如上所述),因此无法工作
回到实际问题:这只是基于域的绑定的一个基本限制吗?我认为如果我直接绑定到特定的域控制器,问题就会消失,但这会使应用程序代码变得非常复杂,因此我希望避免它。这是ldap服务器复制的固有问题。我从未使用过c#api。 我曾在linux上开发过eDirectory。在创建一个对象之后,如果要引用它,最好的选择是坚持使用服务器/DC 为什么它会使应用程序复杂化?编写一个函数来选择服务器。功能 应该对域(example.com)执行dns查找如果您有多个域控制器,它将返回所有ip地址,选择正在运行的ip地址(ping、ldap根dse搜索)并将其返回给调用者
只有在遇到上述问题时才尝试使用该功能。在其他地方,只需坚持使用域。首先:我要说的是@Kalyan:您编写了一个方法,首先在工作开始时选择一个域控制器,并将其存储在共享位置,然后所有EXE都使用它 第二个:您可能可以从域控制器强制复制,首先在该域控制器上使用SyncReplicaFrom创建OU。。。方法在
System.directoryservice.activedirectoryservice
中的DirectoryServer
类上,或使用具有函数的互操作。我不确定这第二条路是不是一条好路
备注:从纯LDAP的角度来看,它可能在RootDSE或其他地方存在一个属性,强制复制为“schemaUpdateNow
”强制模式重新加载