Как программно изменить существующий объектный класс Open LDAP, используя API библиотеки openLDAP для языка C? - PullRequest
0 голосов
/ 23 мая 2018

Я пишу приложение Identity and Access Management на языке программирования C.Поэтому я использую openLDAP для сохранения пользовательских данных, и он предоставляет набор API для выполнения таких операций, как связывание, добавление, поиск, изменение и т. Д. Я создал новый объектный класс для хранения пользовательских данных моего приложения, как показано ниже,

attributetype ( 2.5.4.1 NAME 'id'
    DESC 'RFC2256: user identifier'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributetype ( 2.5.4.2 NAME 'name'
    DESC 'RFC2256: user name'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributetype ( 2.5.4.3 NAME 'email'
    DESC 'RFC2256: user mail address'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )


objectclass ( 2.5.4.4 NAME 'user'
    DESC 'user details'
    SUP top STRUCTURAL
    MUST id
    MAY ( name $ email ) )

Можно ли добавить новый атрибут phoneNumber в класс объектов user без непосредственного редактирования файла схемы, но с использованием API, предоставляемых библиотекой openLDAP?

Ответы [ 3 ]

0 голосов
/ 31 июля 2018

Не то, что вы просили.Но это важно, чтобы другие не наивно копировали и вставляли это:

attributetype (2.5.4. *

[..]

objectclass (2.5.4.4 NAME 'user '

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

С динамической конфигурацией OpenLDAP выможете добавлять / изменять схему на лету, если вы следуете правилам RFC 4512 для определения типов атрибутов и классов объектов.

См. также: cn = schema

Обратите внимание, что удаление описаний схемы в случае, если уже существуют данные, использующие их, - нет-нет.

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

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

Конечно, для многих из нас такое отношение - академическая роскошь, которую мы не можем себе позволить, поэтому мы do вносит изменения в нашу схему, несмотря на то, насколько она ужасает наших поставщиков LDAP.

Однако мы меняем нашу схему, а не стандартную схему.Смена стандартных объектных классов - нет-нет, потому что любые изменения, которые вы вносите в стандарт по умолчанию, иногда пропадают без предупреждения при обновлении программного обеспечения вашего сервера LDAP.И даже когда вы ограничиваете себя редактированием объектных классов, которые вы можете редактировать, вам все равно, вероятно, придется обновлять файлы схемы напрямую, а затем заставлять сервер ldap загружать новые файлы, вместо того, чтобы просто попросить его обновить свои элементы схемы.

Разумеется, разные LDAP-серверы имеют разные уровни отклонения от этого.Например, когда мы использовали iPlanet LDAP, если я правильно помню, это позволило бы нам удалить и добавить объектный класс, который не использовался, и внести в него такие изменения.(Не используйте iPlanet LDAP; это было совместное предприятие, которое распалось более 15 лет назад.)

0 голосов
/ 23 мая 2018

Рекомендуется добавить вспомогательный объектный класс без атрибутов REQUIRED и, при необходимости, добавить атрибуты "MAY".

После добавления класса AUX в схему вы можете добавить, хотя операцию модификацииAUX Class для любой записи Structural ObjectClass в качестве значения ObjectClass по желанию.

Это позволяет поддерживать базовую схему без изменений.

-jim

...