0

目前我正在使用 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 世界中的数据类型。

  • AD 中似乎完全缺少 EQUALITY 之类的东西!如何处理?

问题:是否有工具可以将具有属性/对象定义的 LDIF 文件转换为 MS/AD/ldifde 可以理解的格式?

或者更一般的问题:将属性/对象定义从 OpenDS、OpenLDAP 等迁移到 Microsoft 世界的最佳实践是什么?

4

1 回答 1

2

欢迎来到目录兼容性世界。首先是以下语法:

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 中使用的一种语法,例如 Directories 来指定 Schema(OpenLDAP、Ex Sun 目录服务等)。只要您想在 Active Directory 中引入新的属性和类,您可以使用以下 3 种方式之一:

  • 手动使用常见的 ADSIEDIT.MSC(我从来没有那样做):

ADSIEDIT Active-Directory 架构编辑器

  • 手动使用特定的 Active Directory Scema Editor MMC(Microsoft 管理控制台)

这是我在开发阶段使用的方式。

MMC.EXE -> File -> Open Component -> Active Directory Schema

如果您使用的是旧服务器,则此 MMC 仅可用于录制 Active X 组件:

Regsvr32 c:\windows\system32\schmmgmt.msc

MMC 活动目录架构编辑器

这种方式更容易,这是我在开发 VM 上使用的方式来创建我的属性,然后我使用 LDIFDE.EXE 工具导出 LDIF 描述以清理它(删除系统属性)并将其导入生产服务器。

  • 以编程方式使用 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语法允许我使用-c DNSrc DNTargetLDIFFDE.EXE 程序选项将其定位到正确的 DN。

  • 就语法和匹配规则而言,我认为 Active-Directory不是那么标准。Microsoft 使用这些概念之间的一种组合来给出他们称为Syntax的东西。无论何时创建新属性,都必须指定其语法。要在全部 21 种语法中唯一标识语法,您必须指定 2 条信息:语法的 OID 和所谓的 OM 语法。这对值必须一起设置并与Mictosoft 文档正确关联。
于 2014-06-20T04:47:37.813 回答