java ldap - 获取信息是 AD 中的一些变化

标签 java spring active-directory ldap

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

现在我想走得更远一点..

这个想法是我对特定的 AD 用户组进行开放搜索。当该组中用户的属性或其他内容发生更改时,AD 必须向我的 java 程序发送消息或其他内容来告诉我“注意用户 x 已更改”。

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

我知道每次搜索该 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 .

关于java ldap - 获取信息是 AD 中的一些变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54119412/

相关文章:

java - 如何在 AD 中通过 LDAP 启用用户?

java - Egit 工作目录与 Eclipse 中的项目

java - myClass$1.class 类的 Java 类文件有什么意义?

java - 从服务器向所有客户端发送消息

java - Spring 数据 REST HATEOAS : not lazy loading

c++ - 为什么 NetUserGetInfo 不给我用户主目录?

java - 在android中动态添加缩略图

java - JPA @Query java.lang.IllegalArgumentException :

java - Spring Data JPA CrudRepository 中定义的自定义更新查询无效

vb.net - 针对 AD 发送敏感信息