Как обнаружить и предотвратить циклические ссылки в Unboundid LDAP SDK для Java?

Я использую Unboundid LDAP SDK для java для подключения к AD и выполнения операций в AD.

У меня есть вложенные назначения группы в группу.

Например, например:

В Группу-1 входит Группа-2.

В Группу-2 входит Группа-3.

Теперь возможно, что в Группе-3 есть член Группа-1. Это приведет к бесконечному циклу из-за круговой ссылки.

Также у меня есть n уровень глубины в AD для вложенных членов, поэтому я не уверен, как я могу обнаружить циклическую ссылку при включении группы в другую группу.

Я провел небольшое исследование в Google, чтобы найти решение, и наткнулся на эту вещь:

clientLoop (96) Код результата clientLoop указывает, что клиент обнаружил какой-то цикл при обработке результатов с сервера. Обычно это применяется, когда клиент пытается следовать по ссылке (или ссылке в результатах поиска) и встречает URL перехода, по которому он уже пытался перейти.

Loop_DETECT (54) Код результата (54), который будет использоваться, если сервер обнаружит цепочку или цикл псевдонима.

Ссылка: https://docs.ldap.com/ldap-sdk/docs/javadoc/com/unboundid/ldap/sdk/ResultCode.html

Это означает, что это возможно и есть способ в Unboundid ldap sdk обнаруживать циклические ссылки. Но я пока не могу найти пример кода или решение этой проблемы.

Как в таких случаях обнаруживать и предотвращать циклические ссылки с помощью Unboundid LDAP SDK для java?

Примечание: Это НЕдублирует существующие вопросы, связанные, потому что искать ответ / решение в контексте только Unboundid Ldap SDK. Не в каком-то скрипте PowerShell. На другие подобные вопросы, связанные с Unboundid ldap sdk, пока нет ответа.

1 ответ

Вы можете попробовать (решение для Active Directory) с использованием функции LDAP_MATCHING_RULE_IN_CHAIN, если это соответствует вашим потребностям, что позволяет полностью избежать этого, см., Например:

Безопасно ли использовать реализацию 1.2.840.113556.1.4.1941 в случае циклических зависимостей?

См. Полный пример, например:

https://confluence.atlassian.com/crowdkb/active-directory-user-filter-does-not-search-nested-groups-715130424.html

Это также позволяет избежать нескольких вызовов Active Directory, что может повысить производительность (также убедитесь, что используются кэшированные соединения, которые не используются по умолчанию для соединения SSL/TLS).

Если вам также необходимо учитывать другие домены в лесу, вы можете подключиться к глобальному каталогу (открытый текст через порт 3268 или SSL/TLS через 3269)

Длинное магическое число - это OIN от Microsoft (часть: https://ldapwiki.com/wiki/1.2.840.113556), который является переносимым числовым представлением имени функции: LDAP_MATCHING_RULE_IN_CHAIN. Это имя функции может быть неизвестно вашему программному обеспечению, но OIN - это то, что действительно передается по сети в LDAP/Active Directory.

Другие вопросы по тегам