java - LDAP 中基于角色的安全实现

标签 java ldap rbac apacheds

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

  • 用户
  • 企业用户组 - 人力资源、财务等
  • 权限 - DOCUMENT_READ、DOCUMENT_MODIFY 等
  • 角色 - 管理员、 guest 等

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

我正在考虑在 LDAP 中如下表示它们:

  • 用户 - 具有 userPassword 属性的 Person 和 uidObject 类。
  • 用户组 - organizationalUnit 类,用户属于 位于。
  • 角色 - groupOfNames 对象类。
  • 权限 - 不确定这个,也许还有 groupOfNames 类。

想法是让用户或组快速访问该用户或组具有的角色列表。我知道我可以将用户和组放在一个角色的“成员”属性中,但是我将不得不扫描所有角色以找到列出该用户的角色。有没有办法在 Person 对象中拥有类似“成员”属性的东西?

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

最佳答案

用户:inetOrgPerson

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

角色:组织角色。我将角色组用作 groupOfUniqueNames,但这是一个错误,我应该继续使用 organizationalRole,这样角色就可以简单地递归。

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

正如我所说,不要试图让您的 LDAP 树反射(reflect)您的组织。使其反射(reflect)自己的组织。我会在必要时使用多值属性。我主要将 organizationalUnit 用于 LDAP 本身内的层,或者我违反上述规则的层;-)

OpenLDAP 有一个引用完整性覆盖层,可以为您保留很多信息。

在 Matt Butcher 的Mastering OpenLDAP 中有一些关于 LDAP 结构的非常好的提示,在 Howes 的Understanding and Deploying LDAP Directory Services 中有更高层次的观点等人

关于java - LDAP 中基于角色的安全实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8020237/

相关文章:

java - 是否可以直接在 Spark worker 中创建变量?

ldap - Phpldapadmin因未知原因无法正常工作

kubernetes - K8s 中的受限用户需要 CRD 的访问权限

kubernetes - 使用REST_API的Openshift监控

java - 对 Flex 中现有应用程序实现基于角色的授权的建议

java - 有没有办法在 Spring RSocket 中查看 REQUEST_N 交换

java - 使用 Hibernate Criteria API 性能不佳

java - Java中的二叉树不使用add方法

java - 如何在 tomcat 上使用 LDAP 设置 CAS .. 没有错误

ubuntu - 用于 ubuntu 或本地 LDAP 服务器的 LDAP 模拟器/模拟器