我正在为共享相同用户的一系列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
我有几个问题:
在用户条目下面的jsut是否是开始存储首选项的正确位置?这个条目应该是什么objectClass?我正在尝试使用organizationalUnit,但这似乎不对。
为首选项存储名称值对的最佳方法是什么?在这里,我最好的客人是在具有名称的首选项下方创建一个条目,并在其下创建值。这样我可以考虑多个值。这些条目的正确objectClass应该是什么?
我正在使用OpenLDAP,并且不想更改随附的模式。有没有办法使用可用的模式进行设置?
答案 0 :(得分:2)
您当然可以将首选项存储为用户节点的子级。替代方案可以在用户节点本身上,也可以在完全独立的分支中。取决于您将如何维护它(谁将拥有权限,权限的细化程度,添加新首选项和应用程序的频率等)。
OU是错误的对象类型。您应该定义自己的架构以适合您的应用程序。通常,您希望将架构更改保持在最低限度,因此您定义的架构应设计为在需要新的首选项/应用程序时可扩展。
您可以为每个首选项定义属性,并使用LDAP服务器的内置名称 - 值对支持。或者,您可以定义通用“首选项”属性,并将名称和值存储在数据中。同样,你如何做到这取决于有多少偏好,变化的频率,搜索能力和索引字段等等。
没有什么可以阻止你使用内置类型的一切。就像没有什么可以阻止你调用所有变量v1,v2和你的文件stuff.txt。但是当没有任何符合您需求的内置类型时,就可以添加自己的类型了。这是一件非常简单的事情。
答案 1 :(得分:0)
我认为LDAP目录不是存储它的最佳位置。如果是Web应用程序首选项,您应该以共享方式将它们存储在Web应用程序中。
LDAP目录与您的用户帐户,权限和组织结构有关 - 我不建议将特定于应用程序的设置放在LDAP目录中。
马克
答案 2 :(得分:0)
虽然LDAP是一个多功能读取优化数据库,因为SQL正在进行读/写优化,NoSQL db是键值数据存储。 LDAP非常适合大规模部署,并且已经考虑到集群写入一次并且多次读取。但是,对于键值具有许多读/写的用例,则对于基本键值数据存储,Nois数据库(如redis或memcached)更好。