使用自定义属性对 LDAP 用户进行分组

Grouping LDAP users with custom attribute

我有一个网络应用程序,我想控制哪些用户可以看到哪些数据。所以我认为用户可以属于一个组(即 DBA、中间件专家、UNIX 人员等),并且登录用户只能在应用程序中看到其数据。
我希望 LDAP 进行身份验证。我假设在 LDAP 中没有指定这样的组(即,我不想使用 LDAP 组,因为我不能强制公司 LDAP 创建组并将用户放在这些组中)。

我想到的是一个灵活的解决方案,比如能够对每个用户使用自定义属性(比如命名为 'acces_groups')可以征集哪些组以逗号分隔的字符串。
我读到必须更改 objectClass(如 organizationalPerson)的模式才能做到这一点。但是有没有一种简单的方法可以将这样的自定义属性添加到 LDAP 中的用户(我说的是已经在工作的公司 LDAP)? 或者您将如何解决这个问题(没有 disrupting/breaking 当前的 LDAP)? 我没有说是什么类型的 LDAP(OpenLDAP、活动目录等),因为我想要一个通用的解决方案。

有两种可能 solutions/implementations :

  • 您的假设:您可以添加架构而不更改 organizationalPerson objectClass。 (因为更改已经建立的模式会使您的 LDAP 不标准) 然后将此 objectClas 添加到所有用户,以允许他们使用此架构定义的属性。

    您可以定义 acces_groups 属性并使其成为多值。您还可以为每个 flag 定义一个属性,您需要 dbamiddleware 等,并将其设为布尔值等

    为什么我不会这样做:

    • 与使用 LDAP 中现成的内置机制相比,这是一种更加复杂和具有侵入性的方法。
    • 如果您的 LDAP 管理员允许您像这样修改 LDAP 模式,那么让他改用组应该没有问题,因为这种方法实施起来要简单得多且耗时
    • 每天管理它只是一种痛苦,因为你没有完整性机制。 "emulated" 组的所有 "CRUD" 操作都必须完成 "manually"
      • 如果你想删除一个组,你必须删除所有设置了它的用户的属性。
      • 如果要列出 "group",则必须搜索所有具有正确值的属性设置的用户
      • 等等
  • 使用组:您确实可以创建 dbamiddleware 等组,并将用户分配到这些组。

    • 它将允许您使用群组成员并使用他所属的群组自动填充您的用户的属性
    • 它是 LDAP 标准,只需要处理数据而不是处理 LDAP 配置(涉及停机时间,可能 errors/setbacks 等)
    • 如果您的公司允许您修改 LDAP 配置和用户数据,那么它还应该允许您创建组并向其分配人员