Active directory 将对象类定义导入Active Directory(AD LDS)

Active directory 将对象类定义导入Active Directory(AD LDS),active-directory,ldif,opends,Active Directory,Ldif,Opends,我无法将对象类定义从OpenDS迁移到Active Directory。我已经成功地迁移了一些定义(并且可以用Java应用程序读/写AD),但现在我被卡住了 在我的OpenDS模式描述中,我有如下内容: objectClasses: ( 1.3.6.1.4.1.99.2 NAME 'myNewClass' SUP top STRUCTURAL MUST ( myAttribute1 $ myAttribute2 $ myAttribute3 ) MAY someOtherAttr

我无法将对象类定义从OpenDS迁移到Active Directory。我已经成功地迁移了一些定义(并且可以用Java应用程序读/写AD),但现在我被卡住了

在我的OpenDS模式描述中,我有如下内容:

objectClasses: ( 1.3.6.1.4.1.99.2
  NAME 'myNewClass'
  SUP top STRUCTURAL
  MUST ( myAttribute1 $ myAttribute2 $ myAttribute3 )
  MAY someOtherAttribute
  )
# Class: myNewClass
dn: cn=myNewClass,cn=Schema,cn=Configuration,dc=X
changetype: add
objectClass: classSchema
governsID: 1.3.6.1.4.1.99.2
ldapDisplayName: myNewClass
adminDisplayName: myNewClass
objectClassCategory: 0
systemOnly: FALSE
# subclassOf: top
subclassOf: 2.5.6.0
# rdnAttId: myAttribute1 
rdnAttId: 1.3.6.1.4.1.99.1
# mustContain: myAttribute2 
mustContain: 1.3.6.1.4.1.99.2
# mustContain: myAttribute3 
mustContain: 1.3.6.1.4.1.99.3
# mayContain: someOtherAttribute
mayContain: 1.3.6.1.4.1.99.4
# possSuperiors: organizationalUnit
possSuperiors: 2.5.6.5
# defaultObjectCategory: myNewClass
defaultObjectCategory: cn=myNewClass,cn=Schema,cn=Configuration,dc=X
我将其转换为广告模式语法,如下所示:

objectClasses: ( 1.3.6.1.4.1.99.2
  NAME 'myNewClass'
  SUP top STRUCTURAL
  MUST ( myAttribute1 $ myAttribute2 $ myAttribute3 )
  MAY someOtherAttribute
  )
# Class: myNewClass
dn: cn=myNewClass,cn=Schema,cn=Configuration,dc=X
changetype: add
objectClass: classSchema
governsID: 1.3.6.1.4.1.99.2
ldapDisplayName: myNewClass
adminDisplayName: myNewClass
objectClassCategory: 0
systemOnly: FALSE
# subclassOf: top
subclassOf: 2.5.6.0
# rdnAttId: myAttribute1 
rdnAttId: 1.3.6.1.4.1.99.1
# mustContain: myAttribute2 
mustContain: 1.3.6.1.4.1.99.2
# mustContain: myAttribute3 
mustContain: 1.3.6.1.4.1.99.3
# mayContain: someOtherAttribute
mayContain: 1.3.6.1.4.1.99.4
# possSuperiors: organizationalUnit
possSuperiors: 2.5.6.5
# defaultObjectCategory: myNewClass
defaultObjectCategory: cn=myNewClass,cn=Schema,cn=Configuration,dc=X
但当我尝试编写myNewClass类的对象时,我得到了以下异常:

javax.naming.InvalidNameException: "myAttribute1=Read+myAttribute2=Allow+myAttribute3=cn\=someResource": [LDAP: error code 34 - 0000208F: LdapErr: DSID-0C090715, comment: Error processing name, data 0, v1db1 ];
我假设问题是rdnAttId,它似乎在AD(而不是OpenDS)中很重要。我只能将其设置为单个值(因此我选择了myAttribute1),但它不应该更像myAttribute1、myAttribute2和myAttribute3吗


你该怎么办?

好,这里是一个创建类的LDIF示例。你应该听从我的劝告。首先使用Microsoft管理控制台创建,然后使用LDIFDE.EXE导出,清理LDIFDE,然后可以将其导入其他广告中

dn: CN=SlxOeuvre,CN=Schema,CN=Configuration,DC=XXXX
changetype: add
objectClass: top
objectClass: classSchema
cn: SlxOeuvre
distinguishedName: CN=SlxOeuvre,CN=Schema,CN=Configuration,DC=XXXX
instanceType: 4
possSuperiors: organizationalUnit
subClassOf: top
governsID: 1.3.6.1.4.1.10558.2.2.1
mustContain: SlxTitre
mayContain: SlxChapitres
mayContain: SlxEditeur
mayContain: SlxGenre
mayContain: SlxLangue
mayContain: SlxPages
rDNAttID: cn
showInAdvancedViewOnly: TRUE
adminDisplayName: SlxOeuvre
objectClassCategory: 1
lDAPDisplayName: SlxOeuvre
name: SlxOeuvre
systemOnly: FALSE
在Active Directory中,rDNAttID是用于创建相对可分辨名称的属性的名称。从理论上看,你可以选择你想要的。从实用的角度来看,我只使用了
CN


编辑:

一旦创建了属性,就可以重新加载模式,以便它们可以用于创建类。这是换向器:

dn:
changetype: modify
add: schemaUpdateNow
schemaUpdateNow: 1
-

编辑:

由于您的DN是
cn=myNewClass,cn=Schema,cn=Configuration,dc=X
,您必须将cn添加到属性DN:
cn:myNewClass
(但它应该自动添加)


编辑: 根据:


就RDN而言,Active Directory模型和LDAP数据模型之间的对应关系如下所示。具有属性和值的对象对应于具有属性和值的LDAP条目。此模型和LDAP在objectClass属性的定义上达成一致。该模型中的RDN定义是LDAP定义的子集;此模型中的所有RDN都是有效的LDAP RDN,但并非相反。例如,以下多值RDN是有效的LDAP RDN,但在此模型中无效:“cn=Peter Houston+employeeID=ABC123”。给定RDN定义,此模型中DN的定义与LDAP的定义相同。在LDAP数据模型中,子-父关系表示在子和父的DNs中,而在Active Directory数据模型中,子-父关系表示在父属性中,DN是派生的。Active Directory不通过LDAP公开模型的父属性。

我遇到的问题是:我的对象类定义中没有CN(此类的对象仅由myAttribute1+myAttribute2+myAttribute3定义)。六羟甲基三聚氰胺六甲醚。。。也许Rndattd一点问题都没有?如何解释我得到的Java异常?@Frizz我不太理解Java错误,为什么不尝试在第一次使用MMC创建类,然后导出LDIFF?我不能使用MMC,因为它不允许我创建属性或类(“创建类…”和“创建属性…”变灰)。我以管理员的身份启动它,但仍然变灰。Windows Server 2008 R2标准64位,因为我的RDN是多值的(myAttribute1+myAttribute2+myAttribute3):如何正确设置rdnAttId?