加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 我应该使用域名还是域控制器名称绑定到Active Directory?

发布时间:2020-12-15 21:21:16 所属栏目:百科 来源:网络整理
导读:我正在使用C#和C,通过LDAP提供程序与Active Directory进行通信的应用程序.该应用程序在 Windows 2003,2008和2008 R2上运行.我正在使用看起来像这样的绑定字符串: LDAP://mydomain.com/CN=Fred,DC=mydomain,DC=com LDAP://server.mydomain.com/CN=Fred,DC=
我正在使用C#和C,通过LDAP提供程序与Active Directory进行通信的应用程序.该应用程序在 Windows 2003,2008和2008 R2上运行.我正在使用看起来像这样的绑定字符串:

LDAP://mydomain.com/CN=Fred,DC=mydomain,DC=com
LDAP://server.mydomain.com/CN=Fred,DC=com.

应用程序负责目录中的读写操作.例如,在一个场景中,它会创建一个新OU,然后在该新OU中创建多个用户和组.在另一种情况下,它向交互式用户呈现目录视图,并允许用户创建新的组或用户帐户.

到目前为止,我一直在使用基于域的绑定(上面的第一个示例绑定字符串),基于MSDN的建议:

Under most circumstances,binding should not be unnecessarily tied to a single server. Active Directory Domain Services support serverless binding,which means that Active Directory can be bound to on the default domain without specifying the name of a domain controller

当域上有多个域控制器时,会出现此问题;我现在称他们为Lefty和Righty.如果我使用LDAP://mydomain.com/blah绑定到目录,我隐式连接到Lefty或Righty.以下是发生的情况的示例场景:

>绑定到mydomain.com的根目录. Active Directory胆量选择Lefty作为要与之通信的服务器.
>创建一个名为Container的新OU. OU是在Lefty上创建的.
>尝试绑定到新OU. Active Directory guts选择Righty作为要与之通信的服务器,因此绑定失败,因为Righty不知道新的OU.
>等待10-15秒再次尝试绑定.与任一服务器通信时绑定成功.

在步骤3中,不严格要求重新绑定,但在某些情况下涉及两个不同的可执行文件,因此我无法共享IAD或DirectoryEntry.在内部我认为Active Directory的内核正在使用DsGetDcName来选择要与之通信的服务器,并且其中的文档讨论了如何选择域控制器以及如何缓存该信息.不幸的是,据我所知,这不是应用程序可以真正控制的东西.在某些情况下,我看到应用程序始终连接到一个域控制器或另一个域控制器,但在其他情况下,应用程序似乎在域控制器之间来回切换(如上所述),并且事情不起作用.

解决实际问题:这只是基于域的绑定的基本限制吗?我认为如果我直接绑定到特定的域控制器,问题就会消失,但这会显着地复杂化应用程序代码,所以我希望避免它.

解决方法

这是ldap服务器复制的固有问题.我从未使用过c#api.
我曾在linux上使用eDirectory.在创建对象后,如果要引用它,最好的选择是坚持使用服务器/ DC.

为什么它会使应用程序复杂化?写一个功能来拿起一台服务器.功能
应该对域进行dns查找(example.com)如果你有多个域控制器,它将返回所有的ip地址,拿起一个正在运行的地址(ping,ldap root dse search)并将其返回给调用者.

只有在遇到上述问题时才尝试使用此功能.在其他地方只需坚持使用域名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读