【问题标题】:Import attribute/object definitions to Active Directory (AD LDS)将属性/对象定义导入 Active Directory (AD LDS)
【发布时间】:2014-06-19 15:33:25
【问题描述】:

目前我正在使用 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 仅支持少数几种不同的语法定义,例如 2.5.5.12。如何将 1.3.6.1.4.1.1466.115.121.1.15 之类的内容映射到 AD?

  • oMSyntax:似乎是 AD 特定的,不为 LDAP 世界的其他部分所知。 oMSyntax 结合 attributeSyntax 似乎定义了 AD 世界中的数据类型。

  • 像 EQUALITY 这样的东西似乎在 AD 中完全消失了!如何处理?

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

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

【问题讨论】:

    标签: active-directory ldif opends


    【解决方案1】:

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

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

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

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

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

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

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

    Regsvr32 c:\windows\system32\schmmgmt.msc
    

    这种方式更简单,这是我在开发虚拟机上使用的方式来创建我的属性,然后我使用 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 语法允许我使用LDIFFDE.EXE 程序选项的-c DNSrc DNTarget 将其定位到正确的 DN。

    • 就语法和匹配规则而言,我认为 Active-Directory 不是那么标准。 Microsoft 使用这些概念之间的一种组合来给出他们称为语法的东西。每当您创建一个新属性时,您必须指定它的语法。要在全部 21 种语法中唯一标识语法,您必须指定 2 条信息:语法的 OID 和所谓的 OM 语法。这对值必须设置在一起并与Mictosoft documention 正确关联。

    【讨论】:

    • ...我一直在做一些实验——现在我被 rdnAttId (classSchema 定义)困住了。你能看看我的其他问题吗? stackoverflow.com/questions/24325512/…
    • 完成,希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多