管理 ldap 中的特殊角色

Posted

技术标签:

【中文标题】管理 ldap 中的特殊角色【英文标题】:Manage special roles in ldap 【发布时间】:2011-04-09 03:14:42 【问题描述】:

我有一个配置了 spring 安全性的网络应用程序,它从 ldap 树中获取用户和角色。

我有一个用于用户的 dn ou=User,dc=application 和用于角色的 ou=Groups,dc=application 。

每个角色都是第二个子树中的一个条目,并且通过角色条目中的属性成员进行关联。

实际上我有 5 种不同的角色访问权限(ROLE_A、ROLE_B、ROLE_C、ROLE_D、ROLE_E):每个角色都授予对特定 URL 的访问权限。每个角色都是独立的。

角色子树架构(非常简单且不完整)

ou=组,dc=应用程序。 --cn=A --cn=B --cn=C --cn=D --cn=E

现在我必须满足插入 3 个新角色(ROLE_F、ROLE_G、ROLE_H)的请求,这些角色可以按照固定模式分配: - ROLE_F 只能在用户具有 ROLE_B、ROLE_D、 - 只有当用户处于角色 ROLE_C 或 ROLE_E 时才能分配 ROLE_G - ROLE_H 只能在用户处于角色 ROLE_A 或 ROLE_B 时分配

管理这 3 个新角色的最佳做法是什么?我应该将它们视为应用程序中的独立和托管依赖项还是其他什么?

谢谢

【问题讨论】:

【参考方案1】:

是否有任何理由需要将新角色作为单独的项目进行管理,无论是现在还是将来的某一天,例如ROLE_F授予的权限不会100%适用于ROLE_B人吗?如果是这样,那么我会说它们应该分开管理,即使您只是怀疑有一天它们可能需要分开……毕竟,您现在还不如多花点力气,以免将来麻烦。

但如果您真正需要做的只是向现有组(本例中为 ROLE_B)添加新权限(例如,由 ROLE_F 授予的权限),则不需要新角色。

【讨论】:

ROLE_F(如 ROLE_G 和 ROLE_H)包含特殊操作权限(管理功能),因此它们不会适用于 100% 的 ROLE_B 人。另一个具体情况是,仅当用户具有 ROLE_B 或 ROLE_D 时,才会分配(或不分配)特定的 role_f。我的另一个问题是如何在我的 ldap 服务器中实现这个场景。 很遗憾,这些新角色添加的这些新权限无法关联到现有组,否则我将这些关联到实际组。

以上是关于管理 ldap 中的特殊角色的主要内容,如果未能解决你的问题,请参考以下文章

解析ldap过滤器以转义特殊字符

使用 Ldap 进行春季授权和角色管理

LDAP

php权限管理如何实现

LDAP是什么

jeecg中角色管理是怎么实现的