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

Изменение схемы OpenLDAP - добавление атрибута host к объектному классу person

У нас есть устаревшее пользовательское веб-приложение, которое аутентифицирует пользователей на сервере OpenLDAP. Мы пытаемся настроить другой, отдельный сервер OpenLDAP, чтобы заменить старый, но нам нужно сделать новый сервер OpenLDAP совместимым с этим устаревшим приложением. Приложение считывает атрибут host из атрибутов пользователя, чтобы получить уровень их разрешений для приложения.

Моя проблема в том, что всякий раз, когда я пытаюсь вручную добавить атрибут «host» к любому «человеку» в новом каталоге, я получаю сообщение об ошибке: #! ERROR [LDAP: код ошибки 65 - атрибут «host» не разрешен].

Я пробовал Apache DS, ldapvi, ldapmodify и т.д., чтобы добавить этот атрибут, но независимо от того, что я пробую, он говорит, что это запрещено.

Есть ли простой способ добавить этот атрибут «host», уже определенный в косинусе. (Ldif | schema), к объектному классу «person», определенному в core. (Ldif | schema)? Я относительно новичок в схеме ldap и ищу самый короткий и простой доступный метод.

Вам необходимо включить ldapns.schema

include         /etc/openldap/schema/ldapns.schema

Схема ldapns предоставляет вам вспомогательный объектный класс hostObject. Если вы добавите это к своему человеку, атрибут "host" станет доступным.

Я бы создал новый настраиваемый объектный класс «MyCompanyPerson», определив его как производный от человека и добавив или создав атрибуты, которые мне нужны. Это похоже на то, что вы хотите?

РЕДАКТИРОВАТЬ:

Я не мировой эксперт в этом вопросе, но это анонимная версия того, что я использую сегодня. Досадно, что нет OID для локального использования (мой LDAP никак не подключается к чужому), но вы можете запросить свой собственный OID, если хотите.

$ for i in * ; do echo ; echo $i ; echo ; cat $i | sed 's/^/    /' ; done

mycompany.conf

include /etc/openldap/schema/oidmacros
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/samba.schema
include /etc/openldap/schema/mycompany.schema

mycompany.schema

attributeType ( MyCompanyInternalTelephone-oid  NAME 'MyCompanyInternalTelephone'   DESC 'MyCompany Internal Telephone' EQUALITY telephoneNumberMatch   SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 SINGLE-VALUE X-ORIGIN 'Custom MyCompany Internal Telephone Directory' ) 
attributeType ( MyCompanyPhotoURL-oid   NAME 'MyCompanyPhotoURL'    DESC 'MyCompany Photo URL'  EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Custom MyCompany Wiki' ) 
objectClass ( MyCompanyPerson-oid   NAME 'MyCompanyPerson'  DESC 'MyCompany Person' SUP ( inetOrgPerson ) STRUCTURAL MUST ( )
    MAY ( MyCompanyInternalTelephone $ MyCompanyPhotoURL $ sshPublicKey )
    X-ORIGIN 'Custom MyCompany Directory' ) 

oidmacros

# OID Macros
#
# Yellowbank's IANA Assigned OID for testing
objectIdentifier  MyCompany                       1.3.6.1.4.1.25948.1
objectIdentifier  MyCompanyAT                     MyCompany:1
objectIdentifier  MyCompanyOC                     MyCompany:2

objectIdentifier MyCompanyPhotoURL-oid  MyCompanyAT:100
objectIdentifier MyCompanyInternalTelephone-oid MyCompanyAT:101

objectIdentifier MyCompanyPerson-oid    MyCompanyOC:1

openssh.schema

# octetString SYNTAX
attributetype ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey' 
    DESC 'MANDATORY: OpenSSH Public key' 
    EQUALITY octetStringMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )

# printableString SYNTAX yes|no
objectclass ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
    DESC 'MANDATORY: OpenSSH LPK objectclass'
    MAY ( sshPublicKey $ uid ) 
    )