我们有一个旧版自定义 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”属性将可用。