LDAP授权

8
我正在使用LDAP实现授权和身份验证机制,用于某些现有系统。在开发阶段,我面临一个困难的设计决策:用户角色应该存储在哪里? 如果我使用关系型数据库,似乎会有三个表:用户角色用户角色来映射角色和用户。
请提供可用的解决方案。我考虑将用户角色存储在数据库中,将用户存储在LDAP中,但不确定是否是最好的解决方案。我使用JBoss作为我的应用服务器。
1个回答

8
从架构角度来看,你有多种解决方案。这里是一种将所有数据保存在目录中的解决方案。
在您的目录中,您可以使用类的对象编码您的“角色”,该类的含义为“组”,如groupOfNamesgroup(取决于您的目录)。用户可分辨名称(DN)将在这些对象的多值属性中进行编码(通常为member)。相反,“角色”对象DN可以在用户对象的多值属性中进行编码(例如:memberof)。
如果您的目录支持引用完整性,则可以充当系统目录。然后,membermemberOf属性可以由目录本身管理。这意味着,如果您将用户从一个组织单位移动到另一个组织单位,目录将刷新用户所属的“角色”对象的member属性。
在另一种情况下(没有引用完整性),您的应用程序必须管理属性完整性。
虽然很短,但我希望它能帮到你。

编辑过

首先我推荐您使用Apache Directory Studio,这是我认为最好的LDAP浏览器之一。该工具将允许您查看您的目录并更加友好地学习LDAP。使用此工具,我向您展示了ADAM(Active Directory Application Mode),Microsoft代码中的免费目录“Roles”的方式。

在第一张图片中,您可以看到AdminAdam作为管理员组的成员:

AdminAdam as a member of the administrators group

在这张第二张图片中,您可以看到组在用户adminAdam的memberof属性中的存在。

the attribute memberof of the user adminAdam

ADAM支持引用完整性。


太好了。那角色的权限呢?我需要按照同样的方式吗?我担心结果会变得非常复杂。你觉得呢?再次感谢! - Tioma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接