java ldap - получить информацию, что-то меняется в AD - PullRequest
0 голосов
/ 10 января 2019

Я делаю проект с использованием Java Spring, где я делаю определенные поиски по содержанию некоторых атрибутов от пользователя или группы объявлений. Также я пишу текстовый ввод для определенных атрибутов.

Теперь я хочу пойти немного дальше, но дальше ..

Идея состоит в том, что я делаю открытый поиск по определенной группе пользователей AD. Когда в этой группе атрибуты или что-то еще от пользователя изменяются, тогда AD должен отправить сообщение моей java-программе или что-то, чтобы сказать мне: «Внимание, пользователь x изменился».

Если я знаю это, я могу выполнить новый поиск, чтобы посмотреть, изменились ли атрибуты этого пользователя.

Я знаю, что могу решить эту проблему, чтобы каждый раз выполнять поиск по отметке времени пользователей в этой группе AD. Но это не идеальное решение. Потому что тогда я должен делать каждый раз поиск по каждой отметке времени. И если в этой группе, например, 5000 пользователей. И я начинаю с пользователя 1, а пользователь 4000 изменился, да .. затем потребуется минута или что-то еще, пока я не узнаю, что пользователь 4000 изменился.

Так что я хочу поиск в реальном времени.

Можете ли вы помочь мне с этим? Можете ли вы указать мне направление, по которому я могу искать дальше в Интернете, чтобы найти решение или что-то в этом роде. Или это просто невозможно?

Большое спасибо

1 Ответ

0 голосов
/ 10 января 2019

Active Directory не имеет функции push-уведомлений, поэтому это невозможно сделать. Вам нужно будет периодически выполнять поиск, чтобы найти нужные учетные записи.

Однако вы можете изменить критерии, чтобы найти только те учетные записи, которые вам нужны. В атрибутах whenChanged указана дата последнего изменения учетной записи. Вы можете сделать запрос, чтобы попросить членов этой группы, которые недавно изменились.

Например:

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

Описание формата даты, используемого с whenChanged: здесь .

Условие 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 и описан здесь .

...