У нас есть устаревшее пользовательское веб-приложение, которое аутентифицирует пользователей на сервере 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 )
)