目前我正在使用OpenDS并且必须迁移到Active Directory(AD LDS)。
我有一些在OpenDS / config / schema目录中的.ldif文件中定义的自定义属性/对象,如下所示:
attributeTypes: ( 1.3.6.1.4.1.99.1
NAME 'myNewAttribute'
DESC 'some text'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
objectClasses: ( 1.3.6.1.4.1.99.2
NAME 'myNewClass'
SUP top STRUCTURAL
MUST ( person $ myNewAttribute )
MAY someOtherAttribute
)
不幸的是ldifde不理解这种格式,所以我使用ADSI Edit逐个手动导入我的定义(很麻烦!) - 但遇到了一些问题:
似乎AD只支持少数不同的SYNTAX定义,如2.5.5.12。如何将1.3.6.1.4.1.1466.115.121.1.15之类的内容映射到AD?
oMSyntax:似乎是AD特定的,并且其他LDAP世界都不知道。 oMSyntax与attributeSyntax结合似乎定义了AD世界中的数据类型。
像ADALITY这样的东西似乎在AD中完全丢失了!如何处理?
问题:是否有工具将具有属性/对象定义的LDIF文件转换为MS / AD / ldifde理解的格式?
或者更一般的问题:将属性/对象定义从OpenDS,OpenLDAP等迁移到Microsoft世界的最佳做法是什么?
答案 0 :(得分:2)
欢迎使用Diretories兼容性世界。首先是以下语法:
attributeTypes: ( 1.3.6.1.4.1.99.1
NAME 'myNewAttribute'
DESC 'some text'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
不是LDIF语法。它是Netscape中使用的语法,如目录,用于指定Schema(OpenLDAP,Ex Sun目录服务等)。只要您想在Active Directory中引入新属性和类,就可以使用以下三种方法之一来实现:
这是我在开发阶段使用的方式。
MMC.EXE -> File -> Open Component -> Active Directory Schema
如果您使用的是旧服务器,则此MMC仅可用于录制Active X组件:
Regsvr32 c:\windows\system32\schmmgmt.msc
这种方式更容易,它是我在开发虚拟机上使用的方式来创建我的属性,然后使用LDIFDE.EXE工具导出LDIF描述以清除它(删除系统属性)并导入它在生产服务器上。
以下是属性
的LDIF语法示例dn: CN=SlxChapitres,CN=Schema,CN=Configuration,DC=XXXX
changetype: add
objectClass: top
objectClass: attributeSchema
cn: SlxChapitres
distinguishedName: CN=SlxChapitres,CN=Schema,CN=Configuration,DC=XXXX
instanceType: 4
attributeID: 1.3.6.1.4.1.10558.2.1.6
attributeSyntax: 2.5.5.4
isSingleValued: FALSE
showInAdvancedViewOnly: TRUE
adminDisplayName: SlxChapitres
oMSyntax: 20
lDAPDisplayName: SlxChapitres
name: SlxChapitres
objectCategory: CN=Attribute-Schema,CN=Schema,CN=Configuration,DC=XXXX
此代码 LDIF,我可以使用LDIDE.EXE程序注入DC=XXXX
语法,允许我使用LDIFFDE的-c DNSrc DNTarget
.EXE程序选项,将其定位到正确的DN。