java ldap - 获取信息是对 AD 的更改

java ldap - get info is something changes in to AD

我正在用 java spring 做一个项目,我在其中对来自用户或广告组的某些属性的内容进行特定搜索。我还为特定属性写了一些文本输入。

现在我想走得更远..

我的想法是对特定的 AD 用户组进行公开搜索。当这个组中的某个用户的属性或其他内容发生变化时,AD 必须向我的 java 程序发送消息或告诉我 "attention user x has changed".

如果我知道,我可以重新搜索以查看该用户的属性是否已更改。

我知道每次搜索该 AD 组中用户的时间戳时我都可以解决这个问题。但这不是完美的解决方案。因为那时我必须每次都搜索每个时间戳。如果这个组中有 5000 个用户。我从用户 1 开始,用户 4000 已经更改了是的.. 然后我需要一分钟左右的时间,直到我知道用户 4000 已经更改。

所以我想要一个实时搜索的东西。

你能帮我解决这个问题吗?你能不能给我一个方向,我可以在网上进一步搜索以找到解决方案或其他东西。或者这是不可能的?

非常感谢

Active Directory 没有推送通知功能,所以这是不可能的。您需要定期搜索以找到所需的帐户。

但是,您可以更改条件以仅查找所需的帐户。 whenChanged 属性包含上次更改帐户的日期。您可以查询该组的成员,这些成员最近发生了变化。

例如:

(&(objectClass=User)(whenChanged>=20190108000000.0Z)(memberOf=CN=mygroup,OU=Groups,DC=domain,DC=com))

whenChanged 一起使用的日期格式的描述是 here

memberOf 条件应与组的 distinguishedName 匹配。如果该组中还有其他组,并且您也想找到其中的成员,那么您可以进行递归搜索:

(&(objectClass=User)(whenChanged>=20190108000000.0Z)(memberOf:1.2.840.113556.1.4.1941:=CN=mygroup,OU=Groups,DC=domain,DC=com))

那个疯狂的数字被称为 LDAP_MATCHING_RULE_IN_CHAIN 并被描述为 here