0

我正在使用 vaadin 7 和 jboss 7.1.1。非常精细的 ui 访问有业务需求。每个业务功能都将有父窗口,并且在该窗口中相对于它的功能。业务需要在每个用户内部启用和禁用这些功能,例如,代表员工的父窗口,当您单击它时,您会进入具有编辑、删除、查看、添加等功能的子窗口,但必须为使用它的用户自定义访问权限,例如,用户 x 可以更新但不能删除。
所以我想出的是将这些信息存储在数据库中。在数据库中将有一个包含用户名和用户 guid 的用户表。然后是 parentview 表和 parentchildren 表,最后是 userview 表。我将在 userview 表中存储用户 guid 以及他们有权访问的视图以及读取、写入、更新等中的访问类型...我将在 ui 登录时针对 ldap 进行身份验证,获取用户信息和guid 并使用 guid 从数据库中的 userview 表中提取用户视图访问权限并将其存储在 vaadin 会话中,然后在 ui 上,从会话中读取并显示正确的访问权限。

我不确定这是否是最好的方法,这就是为什么我要问我的解决方案是否可以?我一直在阅读很多关于安全的文档,但似乎没有达到我想要的。将它保存在数据库中的另一点是,我可以创建一个用户管理 ui,它可以通过更新数据库来编辑用户访问权限,我不想重新部署或对网络服务器做任何事情,我更喜欢 ui 用户访问控制模块和有权对其进行管理的人来管理该访问。我真的很感激对此的洞察力和一些想法。

谢谢大家,我会很感激任何意见。

4

1 回答 1

0

无论您所处的环境和使用的技术如何,您想要实现的是细粒度的访问控制/授权。

做到这一点的方法是使用授权框架。例如,Spring Security 就有一个。我不确定 Vaadin 是否附带任何东西。

在我们公司,我们使用 Vaadin 开发管理门户,然后使用XACML将细粒度决策应用于门户,例如为哪些用户启用哪些功能,甚至在 Vaadin 表中显示哪些项目。

一般来说,您要查看基于属性的访问控制(NIST ABAC)领域。ABAC 允许您根据不同的因素/参数定义授权约束,例如用户属性(位置、部门、角色……)和资源属性(其中资源可以是数据、小部件、功能……您可以命名)。

实际上,我昨天举办了一个网络研讨会,主题是 Java MVC 应用程序的细粒度授权。我认为它可能对你有用。

如果您沿着 XACML 路径前进,则无需像之前那样创建包含内部信息的自定义数据库。您需要做的就是编写授权策略,例如购买用户可以使用购买功能

有几种开源 XACML 实现以及供应商解决方案,例如我工作的Axiomatics解决方案。

我希望这有帮助。我还在这里写了一个更长的答案,涵盖了更广泛的授权领域。

于 2013-11-01T12:22:05.253 回答