Назад | Перейти на главную страницу

Как я могу связать значение одного атрибута ldap со значением другого?

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

У меня есть Novell eDirectory, в котором я храню информацию о сотрудниках. В основном он используется для аутентификации различных веб-сервисов, таких как Moodle или Drupal. Но я также использую его как серверную часть для нового каталога сотрудников. Я не видел смысла дублировать данные, кроме того, что они уже дублировались. Кроме того, каталог сотрудников звучит как раз для того, для чего был создан LDAP.

Я создал записи для каждого офиса, затем установил атрибут для каждого пользователя, который ссылается на dn записи office для их офиса. Проблема, с которой я столкнулся сейчас, заключается в том, что у каждого офиса, вероятно, есть свой номер телефона. Таким образом, сотрудники, у которых более одного офиса (например, если они работают в нескольких кампусах), имеют более одного номера телефона. Поскольку номера телефонов следуют за сотрудником, я не могу просто присвоить номер записи в офисе. Итак, мне нужно как-то сказать: «Этот номер телефона для этого офиса».

Если бы это была база данных MySQL, я бы просто создал таблицу, которая отображает все, как я хочу.

Есть ли аналогичная структура, которую я мог бы использовать в LDAP? Или эквивалентный метод?

Чтобы дать подробный пример того, о чем я говорю, вот псевдо-ldif записи о сотруднике:

dn: cn=user,ou=staff,dc=college,dc=edu
officedn: cn=DC107,ou=locations,dc=college,dc=edu
officedn: cn=MAIN222,ou=locations,dc=college,dc=edu
phone: 555-555-5555
phone: 111-111-1111
departmentdn: cn=it,ou=departments,ou=groups,dc=college,dc=edu
departmentdn: cn=math,ou=departments,ou=groups,dc=college,dc=edu
title: web systems admin
title: professor of discrete math

Итак, как бы я относился: officedn: cn=DC107,ou=locations,dc=college,dc=edu к phone: 555-555-5555?

Или officedn: cn=MAIN222,ou=locations,dc=college,dc=edu к phone: 111-111-1111?

Или departmentdn: cn=math,ou=departments,ou=groups,dc=college,dc=edu к title: professor of discrete math?

И так далее...

Несколько заметок, на всякий случай, они актуальны:

Я создал настраиваемые атрибуты для DN офиса и отдела, используя синтаксис DN 1.3.6.1.4.1.1466.115.121.1.12.

Записи отдела имеют объектные классы groupOfNames, nestedGroupAux и Top.

В офисах есть объектные классы: настраиваемый объектный класс, содержащий настраиваемую ссылку dn на запись родительского кампуса, ndsLoginProperties, organizationPerson, Person и Top.

Записи пользователей такие же, как в офисах, плюс posixAccount.

Есть ли другая информация, которую я должен предоставить?

Отредактируйте, чтобы устранить проблемы, для которых комментарии слишком короткие:

Если я создам другую запись, содержащую метаинформацию, как описано в https://serverfault.com/a/500129/99647 Мне нужно создать мета-запись для каждого номера телефона и для каждой должности.

dn: cn=MAIN222,cn=user,ou=staff,dc=college,dc=edu officedn: cn=MAIN222,ou=locations,dc=college,dc=edu phone: 111-111-1111 departmentdn: cn=math,ou=departments,ou=groups,dc=college,dc=edu title: professor of discrete math departmentdn: cn=it,ou=departments,ou=groups,dc=college,dc=edu title: web systems admin

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

Перед тем, как опубликовать вопрос, я придумал метод, похожий на создание ou для всех метаданных: ou=metadata,dc=college,dc=edu Затем по ОУ для каждого пользователя: ou=userid,ou=metadata,dc=college,dc=edu Затем запись для названия должности и номера телефона, которая связала их с их отделами и офисами:

`` dn: cn = jobtitle, ou = userid, ou = metadata, dc = college, dc = edu officedn: cn = DC107, ou = locations, dc = college, dc = edu phone: 555-555-5555

dn: cn = номер телефона, ou = идентификатор пользователя, ou = метаданные, dc = College, dc = edu officedn: cn = MAIN222, ou = locations, dc = College, dc = edu phone: 111-111-1111 ''

Я надеялся, что есть более чистый способ достичь того, что я хочу.

Почему бы просто не создать объект для каждой позиции, который включает служебную и связанную информацию в одном объекте?

Так:

dn: cn=DC107,cn=user,ou=staff,dc=college,dc=edu
officedn: cn=DC107,ou=locations,dc=college,dc=edu
phone: 555-555-5555
departmentdn: cn=it,ou=departments,ou=groups,dc=college,dc=edu
title: web systems admin

dn: cn=MAIN222,cn=user,ou=staff,dc=college,dc=edu
officedn: cn=MAIN222,ou=locations,dc=college,dc=edu
phone: 111-111-1111
departmentdn: cn=math,ou=departments,ou=groups,dc=college,dc=edu
title: professor of discrete math

Таким образом, вы сохраняете все поля, относящиеся к одной позиции, в одном объекте, а пользовательский объект является контейнером. Это значительно упростит поиск и обработку произвольного количества позиций.