如何在ldap目录中存储简单的名称值对

时间:2009-10-11 18:03:43

标签: ldap preferences openldap

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

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

ou=People,dc=domain,dc=com
  uid=jdoe,ou=People,dc=domain,dc=com
    ou=Preferences,uid=jdoe,dc=domain,dc=com
      ou=firstpreference,ou=Preferences,uid=jdoe,dc=domain,dc=com
        value : 123
        value : 456

我有几个问题:

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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

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

马克

答案 2 :(得分:0)

虽然LDAP是一个多功能读取优化数据库,因为SQL正在进行读/写优化,NoSQL db是键值数据存储。 LDAP非常适合大规模部署,并且已经考虑到集群写入一次并且多次读取。但是,对于键值具有许多读/写的用例,则对于基本键值数据存储,Nois数据库(如redis或memcached)更好。