Active directory 如何向LDAP架构添加属性

Active directory 如何向LDAP架构添加属性,active-directory,ldap,unboundid-ldap-sdk,Active Directory,Ldap,Unboundid Ldap Sdk,我试图将一个名为sAMAccountName的新属性添加到已存在的LDAP模式定义中,该定义是通过使用读取的 我在matchingRuleUse中添加了AttributeType条目和sAMAccountName attributeTypes: ( 2.5.18.11 NAME 'sAMAccountName' DESC 'MS Sec Principal User' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.

我试图将一个名为sAMAccountName的新属性添加到已存在的LDAP模式定义中,该定义是通过使用读取的

我在matchingRuleUse中添加了AttributeType条目和sAMAccountName

attributeTypes: ( 2.5.18.11 NAME 'sAMAccountName' DESC 'MS Sec Principal User' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )

matchingRuleUse: ( 2.5.13.1 NAME 'distinguishedNameMatch' APPLIES ( creatorsName $ ... $ sAMAccountName ) )
对于以前存在的每个属性,调用
com.unbounded.ldap.sdk.schema.schema.getAttributeType(“attrName”)
返回属性类型。但不是因为我的新属性

我错过了什么

在@jwilleke评论之后于2018年11月10日编辑

attributeTypes: ( 1.2.840.113556.1.4.221 NAME 'sAMAccountName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )
我试图实现的是一个模拟使用非常有限的功能的Active Directory服务器

在实际的广告制作环境中,有一些条目用objectClass表示用户:person、organizationalPerson、simulatedMicrosoftSecurityPrincipal

在AD中,这些条目包含sAMAccountName和memberof属性。 但它们不在IM-LDAP附带的模式中

身份验证Java代码首先在上执行搜索

(&(objectClass=user)(sAMAccountName=userAccountName)
然后,如果在中找到一个条目,它将检查多值属性memberof中是否存在给定的安全组名称

从生产AD服务器导出的条目如下所示:

dn: cn=Smith\,John,ou=User Accounts,dc=ACME,dc=CORE,dc=INT
changetype: add
objectClass: person
objectClass: organizationalPerson
objectClass: simulatedMicrosoftSecurityPrincipal
cn: Smith,John
sn: JohnS
sAMAccountName: JohnS
userPassword: johnspasswd
memberof: ou=Service Accounts,dc=ACME,dc=CORE,dc=INT
这两个新属性通过添加以下内容添加到架构中的objectClass simulatedMicrosoftSecurityPrincipal:

objectClasses: ( 2.5.6.24 NAME 'simulatedMicrosoftSecurityPrincipal' DESC 'MSSecurityPrincipal' SUP top AUXILIARY MUST sAMAccountName MAY memberof )
但是当我尝试将这些条目导入LDAP模拟时,我得到一个错误,告诉我没有定义sAMAccountName和memberof

编辑2

attributeTypes: ( 1.2.840.113556.1.4.221 NAME 'sAMAccountName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )
Wokr希望添加sAMAccountName,但仍在尝试如何添加memeberOf


是完整的.ldif文件。

这就是最终对我有用的文件

objectClasses: ( 1.2.840.113556.1.5.6 NAME 'microsoftSecurityPrincipal' DESC 'MS SecurityPrincipal' SUP top AUXILIARY MUST ( sAMAccountName $ memberOf ) )

attributeTypes: ( 1.2.840.113556.1.4.221 NAME 'sAMAccountName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )
attributeTypes: ( 1.2.840.113556.1.2.102 NAME 'memberOf' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )

你的问题模棱两可。您正在尝试向服务器添加属性定义,还是尝试在客户端应用程序的条目中添加属性,并且需要该属性的架构定义?我有服务器和客户端。服务器是在启动时加载附加架构的服务器。然后,我有一个客户端应用程序,它必须使用属性sAMAccountName,该属性不在IM-LDAP附带的模式中。也许您应该解释一下您正在尝试实现什么?除非IM-LDAP中有一些技巧,否则您将无法使用samAccountName作为用户ID来执行登录。而samAccountName不适合DifferentiedNameMatch匹配规则,因为它不是DN。我更新了原来的问题,进一步解释了我想要实现的目标。谢谢。我也找到了这个,但是OlcatAttribute类型对我来说也不起作用。你可能想在ObjectClass之前声明AttributeType(因为后者指的是前者)。不过,你的问题是什么,你想实现什么,现在还不清楚。