Я установил сервер openLDAP и создал настраиваемую схему с различными полями, и она отлично работает. Однако у меня есть несколько полей, в которых я хотел бы иметь только некоторые значения.
Например, у меня есть поле под названием deviceLocation
, и мне нужны только значения EAST
, WEST
или CENTER
.
Как это сделать?
Вам необходимо добавить наложение ограничений
в вашу конфигурацию. Он позволяет добавлять регулярные выражения, значения которых должны совпадать, чтобы их можно было принять операциями добавления или изменения. В качестве альтернативы это позволит вам создать поддерево со всеми разрешенными местоположениями, а затем проверить, указано ли в этом поддереве значение, которое вы пытаетесь добавить.
http://www.openldap.org/doc/admin24/overlays.html#Constraints
Для справки в будущем: как указал @Sven, я использовал ограничения для решения проблемы. В моем случае я создаю один файл ldif для активации модуля ограничений:
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: constraint.la
И еще один для его настройки:
dn: olcOverlay=constraint,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcConstraintConfig
olcOverlay: constraint
olcConstraintAttribute: deviceLoacation regex ^(EAST|WEST|CENTER)$
Загрузил файлы с помощью ldapadd
и работал как шарм