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

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

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

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

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

1
задан 3 February 2016 в 22:36
2 ответа

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

include         /etc/openldap/schema/ldapns.schema

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

1
ответ дан 3 December 2019 в 20:42

Я бы создал новый пользовательский объектный класс "MyCompanyPerson", определив его как происходящий от человека, и добавив или создав нужные мне атрибуты. Звучит ли это так, как будто это то, что вы хотите?

EDIT:

Я не мировой эксперт в этом, но это анонимизированная версия того, что я использую сегодня. Раздражает то, что нет локальных 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. Схема

# 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 ) 
    )
1
ответ дан 3 December 2019 в 20:42

Теги

Похожие вопросы