Для обеспечения уникальности при выполнении операций add, modify или modrdn осуществляется поиск по поддереву с целью проверки того, что значения всех атрибутов, присутствующих в этих операциях, являются уникальными в данном диапазоне. Например, если для атрибута uid была настроена проверка соблюдения уникальности, то по заданному поддереву будет осуществлён поиск других записей, содержащих то же самое значение в атрибуте uid. Если хотя бы одна запись будет найдена, запрос будет отклонен.
Этот поиск выполняется от имени rootdn целевой базы данных во избежание ограничений на просмотр всей требуемой информации со стороны ACL. Соответственно, в базе данных должно быть настроено rootdn.
Ключевые слова strict и ignore должны быть заключены в кавычки (") вместе с идущим следом URI.
Синтаксис LDAP URI является подмножеством синтаксиса, определённого в RFC 4516, и представляет собой следующую форму:
ldap:///[base dn]?[attributes...]?scope[?filter]
По умолчанию base dn соответствует контексту именования той базы данных, к которой применяется наложение. Определяемые явно base dn должны находиться внутри поддерева этого контекста именования.
Если не указан компонент attributes, URI применяется ко всем неоперационным атрибутам.
Компонент scope по существу является обязательным, поскольку диапазон поиска по умолчанию для LDAP URI - base, что не подходит для определения уникальности, так как в группе, состоящей из одного объекта, уникальность соблюдается всегда. Подходящие варианты поискового диапазона: sub (для поиска по поддереву) и one для поиска на один уровень ниже относительно базы поиска.
Задание компонента filter приведёт к тому, что область ограничений будет накладывать ограничения уникальности только на те объекты, которые соответствуют этому фильтру. Например, URI ldap:///?cn?sub?(sn=e*) требует соблюдения уникальности значений атрибута cn для всех объектов поддерева базы данных, у которых значения атрибута sn начинаются на букву e.
Существует возможность обеспечить уникальность всех неоперационных атрибутов, за исключением тех, которые перечислены в URI, перед которым присутствует ключевое слово ignore. Если такая настройка не задана, значения всех неоперационных (не являющихся системными) атрибутов должны быть уникальны. Имейте ввиду, что в список attributes URI ignore в общем случае должны попасть атрибуты objectClass, dc, ou и o, поскольку, с одной стороны, их значения, скорее всего, не должны быть уникальными, а с другой, все они являются неоперационными атрибутами.
Существует возможность задать область ограничений со строгой проверкой уникальности, указав перед URI ключевое слово strict. По умолчанию проверка уникальности не распространяется на null-значения. Включение режима strict распространяет концепцию уникальности на null-значения, то есть в пределах поддерева только одному атрибуту будет разрешено иметь null-значение. Строгая проверка применяется ко всем URI в пределах одной области ограничений, но если задаётся несколько областей ограничений, то одни из них могут быть со строгой проверкой уникальности, а другие - нет.
Нельзя одновременно задавать и URI, и устаревшие параметры конфигурации slapo-unique. Устаревшие параметры конфигурации управляют частями настроек единственной области ограничений в виде поддерева, при поиске по которому нельзя применить фильтрацию.
unique_uri нельзя использовать совместно с конфигурацией в старом стиле, и наоборот. С помощью unique_uri можно реализовать всё то, что позволяла сделать старая система конфигурации.
В код наложения намеренно не включены атрибуты по умолчанию для URI ignore ldap:///..., чтобы обеспечить максимальную гибкость при выполнении требований, специфичных для конкретных систем.
Репликация, а также операции с элементом управления manageDsaIt, позволяют обойти данное ограничение. Поэтому для поддержания уникальности значений в реплицируемом DIT важно, чтобы на всех серверах, принимающих и обрабатывающих операции записи, было настроено это наложение.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |