因项目原因,需要在LDAP中配置inetOrgPerson对象类的两个自定义属性。
- isAbsent 128字符内的字符串,单值
- substitutes 128字符内的字符串,多值
参阅了OpenLdap的管理文档以及网上的实例之后,解决方案如下:
编辑OpenLDAP的模式定义文件inetorgperson.schema,增加属性定义
attributetype ( 2.16.840.1.113730.3.1.900
NAME ‘isAbsent‘
DESC ‘whether the person is absent from work‘
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128}
SINGLE-VALUE )
attributetype ( 2.16.840.1.113730.3.1.901
NAME ‘substitutes‘
DESC ‘people substitutes when absent‘
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
其中2.16.840.1.113730.3.1.900和901是选择未被使用的OID(不知道有没有被使用过?google下吧),而1.3.6.1.4.1.1466.115.121.1.15则是字符串类型的语法。
在inetOrgPerson类中启用这2个属性
objectclass ( 2.16.840.1.113730.3.2.2
NAME ‘inetOrgPerson‘
DESC ‘RFC2798: Internet Organizational Person‘
SUP organizationalPerson
STRUCTURAL
MAY (
...
isAbsent $ substitutes )
)
在slapd.conf中启用inetorgperson.schema
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
ucdata-path ./ucdata
include ./schema/core.schema
include ./schema/cosine.schema
include ./schema/inetorgperson.schema
include ./schema/nis.schema
重新启动LDAP服务之后一切搞定。