【问题标题】:Notify me when events in Active Directory occur in C#当 Active Directory 中的事件在 C# 中发生时通知我
【发布时间】:2016-09-01 01:09:19
【问题描述】:

当使用 LDAP 协议在 Active Directory 中发生某些事件时,我需要收到通知。应该触发的事件有:

  • 当某个 AD 组与用户关联时。
  • 如果 AD 用户中的某个字段(如电话号码)发生了变化。

我搜索了所有互联网,但大多数解决方案都是基于本文末尾的代码:

正如那篇文章中提到的,有 3 种方法可以做到这一点:

  • 使用 USNChanged
  • 使用 DirSync 控件
  • 并在页面末尾使用该代码。

对于前两个选项,我在 Microsoft 的网站上找到了带有示例的文章,但所有示例都是用 C++ 编写的,而我需要在 C# 中使用这个。

我发现的其他代码示例不完整且无法理解,因此我无法适当地使用它们。

我可以使用与所提供文章末尾的代码类似的任何解决方案、代码示例等吗?

再一次,我在 C# 中需要这个

谢谢

【问题讨论】:

  • 您有 Microsoft c++ 示例的链接吗?
  • 需要LDAP的原因是什么?我认为您也可以尝试 a) 启用 AD DS 审核(并阅读该日志)technet.microsoft.com/en-us/library/… b) 使用第三方工具,如 manageengine.com/products/active-directory-audit c) 如果不需要实时通知,那么您可以安排一个代码检查所需的组/属性并与以前的值进行比较。
  • @smirnov LDAP 只是我们在 AD 上连接、发送数据等方式的一种协议,对吧?我对此不太熟悉,我看到它也以 ldap 服务器等方式提到过。我说这是因为在我的请求状态中:我们可以根据 LDAP 的 .net 连接模型对哪些事件采取行动,以收到此通知?您提供的第三个解决方案可以帮助我,我看到了一些这样的例子,但我不确定它是否可以工作。您是否有一些代码示例可以帮助我实现这个方向?
  • 与AD一起工作不一定需要LDAP,有System.DirectoryServices,也可以使用。关于第三种解决方案的示例 - 您将在 AD 中拥有多少用户?如果 a) 没有多少用户/组需要监控(因此您不需要创建当前状态的大快照) b) 您可能无法管理 AD(并且您无法设置例如审核),则此想法可能会很好用。

标签: c# .net active-directory ldap active-directory-group


【解决方案1】:

我想分享我到目前为止所取得的成就。因此,由于我设法使用提供的文章中的第三种解决方案在我的 Active Directory 上设置了通知器:

我意识到(尽管它在帖子中提到)它可以在域中仅注册 5 个对象 - 我不完全确定为什么,但服务器存在一些限制。我用下一行代码解决了这个问题:

notifier.Register("dc=a24xrmdomain,dc=info",System.DirectoryServices.Protocols.SearchScope.Subtree);

也就是我设置了要观察的根域,并将监控范围设置为System.DirectoryServices.Protocols.SearchScope.Subtree) - all child's。

我发现以这种方式监视 Active Directory 并不是最佳做法,因为如果有很多用户 - 例如 10k,则不会触发所有更改。因此,由于您必须拥有要监视的对象的先前状态,您可以使用提供的链接中的其他两种方法来完成此任务。例如,我假设您必须为每 5 秒设置一些计时器并检查对象的相应字段。

【讨论】:

  • 另外,如果有人知道如何从提供的链接(第三种解决方案)创建限制 5 个对象的解决方法,他可以发布他的答案!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多