【问题标题】:Why objectClass is different between LDAP servers为什么 LDAP 服务器之间的 objectClass 不同
【发布时间】:2016-03-12 17:26:47
【问题描述】:

我正在尝试编写一个将用户从多个 LDAP 服务器同步到一个数据库的应用程序。我试图编写一个代码,从给定的 basedn 中找到服务器中的所有组。但后来我注意到 LDAP 服务器之间的 objectClass 值不同。

例如,OpenLDAP 使用 objectClass=posixgroup 来标识组,而 AD 使用 objectClass=group。试图找出为什么没有这方面的标准,但找不到。

除了为每个服务器类型配置它之外,还有其他方法可以识别该服务器用于组的 objectClass name 的值吗?

【问题讨论】:

  • 您是否尝试对所有供应商类型使用通用查询?如果是这样,您可以使用不存在的属性提交查询。例如:(|(objectClass=group)(objectClass=posixgroup))
  • 如果我要为您的功能编写一个应用程序,我会为每个服务器类型定义一个查询并相应地配置不同的源服务器。

标签: ldap


【解决方案1】:

OpenLDAP 确实使用objectClass=posixgroup 来标识组。事实上,是连接到目录服务器的服务使用或不使用特定模式。目录服务器本身是无意识的(或者至少从 LDAP 的角度来看——Active Directory 比 LDAP 做得更多)。

在 POSIX 系统上,例如Linux 很明显posixgroup 被许多服务使用,同样group 类是特定于 Windows 的。许多服务允许自定义在目录中搜索信息的方式,即您可以调整它们的配置以适应您的架构。

因此,虽然您可以使用技巧来处理这两种情况,但如果您想真正确定使用哪种模式,您有两种选择:

  1. 识别正在使用该目录的服务并查找它们
  2. 查询服务器以获取它支持的模式。通常这些也是在使用的(至少被“某人”使用)。例如,在我的 OpenLDAP 服务器上,我仅按需求包含模式。所以在这台服务器上你会发现posixgroup 模式。但是我怀疑在典型的 Active Directory 服务器上你会找到它(但你会找到group)。 Schemata 具有世界唯一的对象 ID,因此您可以测试是否存在特定 ID,以确保 group 确实是您所知道的 group

【讨论】:

    【解决方案2】:

    对此没有单一的答案。对于 OpenLDAP 和许多其他情况,这取决于您使用的架构。我在 OpenLDAP 中使用groupOfUniqueNames 表示组,使用organizationalRole 表示角色,还有其他选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 2014-07-24
      相关资源
      最近更新 更多