5

我正在为一系列共享相同用户的 Web 应用程序创建一个用户存储库 ldap 后端。我想在这个 ldap 位置存储偏好信息。这样,与用户相关的所有内容都保存在同一个地方,并且可以在所有应用程序之间共享。

我正在考虑这样的一般结构:

ou=人,dc=域,dc=com
  uid=jdoe,ou=人,dc=域,dc=com
    ou=首选项,uid=jdoe,dc=域,dc=com
      ou=firstpreference,ou=Preferences,uid=jdoe,dc=domain,dc=com
        价值:123
        价值:456

我有几个问题:

  1. 用户条目下方的 jsut 是否是开始存储首选项的正确位置?这个条目应该是什么objectClass?我正在尝试organizationUnit,但它似乎不正确。

  2. 为首选项存储名称值对的最佳方式是什么?在这里,我最好的客人是在具有名称的首选项下方创建一个条目,并在其下方创建值。这样我可以考虑多个值。这些条目的正确 objectClass 应该是什么?

我正在使用 OpenLDAP,并且不想更改它附带的模式。有没有办法使用可用的模式进行设置?

4

3 回答 3

2
  1. 您当然可以将首选项存储为用户节点的子节点。替代方案将位于用户节点本身或完全独立的分支中。取决于您将如何维护它(谁将拥有权限、权限的粒度、添加新首选项和应用程序的频率等)。

    OU 是错误的对象类型。您应该定义自己的模式以适合您的应用程序。通常,您希望将架构更改保持在最低限度,因此您定义的架构应设计为在需要新的首选项/应用程序时可扩展。

  2. 您可以为每个首选项定义一个属性并使用 LDAP 服务器的内置名称-值对支持。或者您可以定义一个通用的“首选项”属性并将名称和值存储在数据中。同样,您如何做到这一点取决于有多少偏好、更改频率、搜索和索引字段的能力等。

没有什么可以阻止您对所有内容使用内置类型。就像没有什么可以阻止您调用所有变量 v1、v2 和文件 stuff.txt。但是,当没有任何内置类型符合您的需求时,是时候添加您自己的了。这是一件非常简单的事情。

于 2009-12-06T23:35:51.230 回答
0

我不认为 LDAP 目录是存储它的最佳位置,真的。如果它是 Web 应用程序首选项,您应该将它们与 Web 应用程序一起存储并存储在 Web 应用程序中 - 以共享的方式。

LDAP 目录与您的用户帐户、权限、组织结构有关——我不建议将特定于应用程序的设置放在 LDAP 目录中。

马克

于 2009-10-11T20:15:24.780 回答
0

虽然 LDAP 是一个多功能的读优化数据库,但它与 SQL 的读/写优化和 NoSQL db 的键值数据存储相对应。LDAP 非常适合大规模部署,并且已经考虑了一次写入和多次读取的集群。但是对于键值有很多读/写的用例,那么像 redis 或 memcached 这样的 NoSQL 数据库更适合基本的键值数据存储。

于 2015-05-18T07:53:58.487 回答