Как обнаружить и предотвратить циклические ссылки в 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 в случае циклических зависимостей?
См. Полный пример, например:
Это также позволяет избежать нескольких вызовов 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.