首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Security / Java EE分层树角色解决方案

Spring Security / Java EE分层树角色解决方案
EN

Stack Overflow用户
提问于 2012-07-10 08:07:39
回答 2查看 2.2K关注 0票数 15

我知道Spring Security适用于基于角色和权限的标准授权。我不确定的是这个场景:

系统中管理着10,000名员工,这些员工被组织到一个组织结构图(一个跨部门向谁报告的树)中。这些员工中的一些人是用户。这些用户仅允许访问其职责线中的员工(其在树中的分支/其员工的后代)。

所以我想知道现代Java (或其他)系统是如何管理这些检查的?Spring Security (ACL)可以做到这一点吗?如何对其进行建模?

我们的旧实现(多年前)是,当用户访问员工时,我们可以通过递归树来检查请求的员工是否为后代。但这不是理想的解决方案,我们希望使用新的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-10 13:08:36

由于我已经在这个问题上工作了大约一个月,所以我可以给你我对这个问题的答案,但是可能还有更好的答案。

Spring Security中有一些角色层次结构,如果您使用ROLE_A > ROLE_B,那么ROLE_A将拥有ROLE_B拥有的所有授权。

所以这里有两个选项:

每个用户及其后代的

  1. 都有一对类似的角色。用户为ROLE_USERi,其后代为ROLE_USERiDESC。你将会有

ROLE_USERi > ROLE_USERiDESC

但是(因为我不知道你的组织结构图)这可能是不够的,因为可能有很多这样的配对!不知何故,如果你的树有两个或三个级别(ROLE_USER最多有一个或两个上升者),那么它是合适的,因为角色越高,它拥有的权威就越多。

  1. 在我的项目中(碰巧非常相似)我做了另一种选择。对于一些基本的操作,我有一些基本的角色。我有一个“关爱小组”,在这个小组中,照顾者可以观察其后代数据。

我为什么要这么做?因为我必须拥有某些操作的角色(比如编辑、删除、访问一些敏感数据等等)。和关爱团体来观察。

如果A是B的照顾者,它可以观察B的数据,但A不能做任何超出其权限的事情。

顺便说一句,它还没有完全测试,你可能会找到另一种可能的解决方案。

另请参阅:

  • Spring Security 3.1.x Documentation
票数 6
EN

Stack Overflow用户

发布于 2015-04-22 18:36:00

当我们谈论Spring安全性时,Spring提供了两件事。1)角色管理2) ACL (域级权限)我认为这里需要的是域级权限。

如果您计划使用角色管理,通过为每个用户创建相应的角色,数据可能会增长。第二种选择是使用域级权限(Spring ACL),这是一个很好的运行时授权框架。您可以将其用于基于注释的授权,但是管理API非常有限(BasicLookupStrategy),因此在使用它之前请仔细阅读文档。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11404968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档