上LdapConnection类的Active Directory我有一个问题:我需要从远程服务器到Active Directory连接,但代码必须使用LdapConnection
类。我需要这样做,因为这样我只能在发生某些事件时(例如,用户已停用或者更改组,数据等)测试更改通知程序。在远程服务器上的操作系统是Windows Server 2012的连接到使用远程服务器
我设法使用DirectoryServices
用下面的代码从地方这样做:
String ldapPath = "LDAP://XRMSERVER02.a24xrmdomain.info";
directoryEntry = new DirectoryEntry(ldapPath, @"A24XRMDOMAIN\username", "pass");
//// Search AD to see if the user already exists.
DirectorySearcher search = new DirectorySearcher(directoryEntry);
search.Filter = "(&(objectClass=user))";
SearchResult result = search.FindOne();
这是正常的和连接工作,但现在我需要使用LdapConnection
连接类。
我想这样的事情在很多方面,但没有的,帮助我:
LdapConnection connection = new LdapConnection(XRMSERVER02.a24xrmdomain.info);
var credentials = new NetworkCredential(@"A24XRMDOMAIN\username", "pass");
connection.Credential = credentials;
connection.Bind();
它说,证书是无效的,但事实并非如此。
说明:
XRMSERVER02
- 的域控制器a24xrmdomain.info
- 域名A24XRMDOMAIN
- 域名用于登录
感谢您的帮助。
如果您要监视整个域,我不建议使用更改通知。此技术旨在用于需要监视指定对象或多个对象以更改属性的情况。在高负载环境中这种技术根本不起作用:您将不会收到关于修改(10K用户添加到域,并看看会发生什么)的所有通知。对于整个域中的轮询更改,请使用DirSync或USN技术。 – oldovets
你的意思是我的通知问题http://stackoverflow.com/questions/39261263/notify-me-when-events-in-active-directory-occur-in-c-sharp ..我使用通知因为我不知道如何改变其他技术,也许每5秒设置一些TImer来检查uSNChanged属性状态?我有对象的以前的状态,所以它可以这样工作。我不确定什么是其他选项。你能检查我提供的链接上的答案吗?谢谢 – Dan
对于uSNChanged技术,您可以执行以下步骤:1.连接到DC。 2.从该DC查询当前highestCommitedUsn(将其命名为hcusn)(请参阅https://msdn.microsoft.com/zh-cn/library/system.directoryservices.activedirectory.domaincontroller.highestcommittedusn(v=vs.110).aspx) 。 3.如果您需要先前的值,则通过在LDAP过滤器中指定(uSNChanged <= hcusn)来收集来自此DC的当前AD快照。 4.将硬盘存储在磁盘上。 5.再次连接到同一个DC。 6.查询highestCommitedUsn(将其命名为hcusnnew)4.通过在LDAP过滤器中指定&(uSNChanged> hcusn)(uSNChanged <= hcusnew)来收集更改。 – oldovets