修改 OpenLDAP 模式 - 将“host”属性添加到“person”对象类

修改 OpenLDAP 模式 - 将“host”属性添加到“person”对象类

我们有一个旧版自定义 Web 应用程序,它通过 OpenLDAP 服务器对用户进行身份验证。我们正在尝试设置另一个单独的 OpenLDAP 服务器来替换旧服务器,但我们需要使新 OpenLDAP 服务器与此旧版应用程序兼容。该应用程序从用户的属性中读取“主机”属性以获取他们对该应用程序的权限级别。

我的问题是,每当我尝试手动将“host”属性添加到新目录中的任何“person”时,我都会收到错误:#!ERROR [LDAP:错误代码 65 - 不允许属性“host”]。

我尝试使用 Apache DS、ldapvi、ldapmodify 等来添加此属性,但无论我怎么尝试,它都说不允许。

有没有一种简单的方法可以将 cosine.(ldif|schema) 中已定义的“host”属性添加到 core.(ldif|schema) 中定义的“person”对象类?我对 ldap schema 还比较陌生,正在寻找最短、最简单的方法。

答案1

我将创建一个新的自定义对象类“MyCompanyPerson”,将其定义为从 person 派生,并添加或创建我想要的属性。这听起来像您想要的吗?

编辑:

我不是这方面的专家,但这是我现在使用的匿名版本。没有本地使用的 OID(我的 LDAP 绝对不会连接到其他人的),这很烦人,但如果您愿意,您可以请求自己的 OID。

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

我的公司配置文件

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' ) 

类宏

# 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 ) 
    )

答案2

您需要包含 ldapns.schema

include         /etc/openldap/schema/ldapns.schema

ldapns 模式为您提供了一个辅助 objectClass“hostObject”。如果您将其添加到您的人员,则“host”属性将可用。

相关内容