LDAP中基于角色的安全性实现

use*_*054 7 java ldap rbac apacheds

我正在研究LDAP和Java中基于角色的安全性实现.具体来说,我需要在LDAP中表示以下对象:

  • 用户
  • 企业用户组 - 人力资源,财务等
  • 权限 - DOCUMENT_READ,DOCUMENT_MODIFY等
  • 角色 - ADMIN,GUEST等

角色基本上是权限组,可以将它们分配给用户或一组用户.

我想在LDAP中表示它们如下:

  • 用户 - 具有userPassword属性的Person和uidObject类.
  • 用户组 - organizationalUnit类,用户所在的组.
  • 角色 - groupOfNames对象类.
  • 权限 - 不确定这个,也许也是groupOfNames类.

其目的是让用户或组快速访问该用户或组具有的角色列表.我知道我可以将用户和组放在角色的"成员"属性中,但是我必须扫描所有角色以找到列出此用户的角色.有没有办法在Person对象中使用类似"member"属性的东西?

通常,有没有人知道LDAP中基于角色的良好安全性实现?我找不到关于这个主题的好文档或教程.我目前正在使用ApacheDS作为LDAP服务器,但我愿意接受建议.

use*_*421 8

用户:inetOrgPerson

集合:organizationalUnit,但要注意尝试在LDAP目录中复制组织结构:这通常是一个错误,因为组织会发生变化,用户会在组织中移动.您应该考虑使用ou 属性.

角色:organizationalRole.我使用了一组角色作为groupOfUniqueNames,但这是一个错误,我应该继续使用organizationalRole,以便角色只是递归.

权限:这只是一个角色,或角色的属性.如果使用CMA,则在web.xml中定义它们,而不是LDAP.

正如我所说,不要试图让你的LDAP树镜像你的组织.让它镜像自己的组织.我在必要时使用多值属性.我使用organizationalUnit主要用于LDAP本身的层,或者我违反上述规则的地方;-)

OpenLDAP具有参照完整性覆盖,可以为您保留很多这样的内容.

Matt Butcher 在Mastering OpenLDAP中有一些关于LDAP结构的非常好的提示,以及Howes 等人理解和部署LDAP目录服务中的更高层次的观点.